• ベストアンサー

ユーザーフォームの入力先が複数さらに集計手に負えません教えて下さい

Worksheets("全体売上").Activate If TextBox1 = 1 Then myDCount = Range("あ").Rows.Count Range("あ").Cells(myDCount, 2).EntireRow.Insert With Range("あ") .Cells(myDCount, 2).Value = TextBox2 .Cells(myDCount, 3).Value = TextBox3 .Cells(myDCount, 5).Value = TextBox4 .Cells(myDCount, 6).Value = TextBox5 .Cells(myDCount, 9).Value = TextBox6 .Cells(myDCount, 13).Value = TextBox9 .Cells(myDCount, 7).Value = TextBox10 .Cells(myDCount, 8).Value = TextBox11 .Cells(myDCount, 21).Value = TextBox12 End With Me.Hide ElseIf TextBox1 = 2 Then myDCount = Range("い").Rows.Count Range("い").Cells(myDCount, 2).EntireRow.Insert With Range("い") .Cells(myDCount, 2).Value = TextBox2 .Cells(myDCount, 3).Value = TextBox3 .Cells(myDCount, 5).Value = TextBox4 .Cells(myDCount, 6).Value = TextBox5 .Cells(myDCount, 9).Value = TextBox6 .Cells(myDCount, 13).Value = TextBox9 .Cells(myDCount, 7).Value = TextBox10 .Cells(myDCount, 8).Value = TextBox11 .Cells(myDCount, 21).Value = TextBox12 End With Me.Hide と続いてます。フォームから各範囲には入力が出来るようになったのですが、文字列となってしまい計算が出来ません。 数値として入力をしたいのが、TextBox2、TextBox3、TextBox4、TextBox9、TextBox12です。 TextBoxからセルに転記させる時に数値に変換する方法はありますでしょうか? End If Unload Me End Sub 又、セル範囲が”あ”~”し”とあります。例、範囲 あはB1~V2です。(1行目は項目)それぞれ条件に合った時にTextBoxから行を足してセルに入力されるのですが 行が変動するのでsumでは計算出来ません。ユーザーフォームのTextBox12からセルに入った数値の合計を求めるプログラムがありましたら、どなたかお知恵を下さい。 ちなみにセル範囲あの時、TextBox12はV2に入ります。範囲い~しの時も教えて頂きたいです。同じシートで入力される範囲が12か所あるので私では分りません。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 残念ながら、そのご説明では、あまり良く分からないというか、もともと、名前--定義されたものは、VBAコードでは読めません。ある程度のVBAの技術がある人は、ほとんど名前--定義は使用しません。 ただ、方法としては、マクロで、入力範囲の名前をループして、その範囲の2行目をピックアップして合計を出せばよいと思います。そんなに難しいことではないはずです。 '------------------------------------------- Dim vsum As Double '合計 For Each v In Array("あ", "い", "う", "え", "お", "か", "き", "こ", "け", "こ", "さ", "し")  With Range(v)    vsum = vsum + .Cells(2, .Columns.Count).Value '.Columns.Count = 21  End With Next '-------------------------------------------

sc420
質問者

お礼

御解答有難う御座いました

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 セルに入れる場合は、TextBox に数字を入れれば、Textプロパティで文字の数字でも、セルに入れる場合は、セルの書式が「文字列」以外なら、型キャストが働いて、セルへの入力は、数値になります。 >TextBoxからセルに転記させる時に数値に変換する方法はありますでしょうか? 一般的には必要ありませんし、SUMで合計できないということはありえません。何かの間違いだと思います。もし、書式・文字列になっているなら、解除してください。 >ユーザーフォームのTextBox12からセルに入った数値の合計を求めるプログラムがありましたら、どなたかお知恵を下さい。 TextBox12 から、セルに入った数値の合計を求めるというのは、どういう意味でしょうね。 よく分かりませんが、もし、テキストボックスの合計を出すなら、以下のようにして、TextBox2 ~ TextBox11 の数値の合計が出せます。 ret = SumTextBoxes(2, 11) '------------------------------------------- 'ユーザーフォーム・モジュールのみ '------------------------------------------- Function SumTextBoxes(iStart As Integer, iLast As Integer) Dim dbSum As Double  For i = iStart To iLast    dbSum = dbSum + Val(Me.Controls("TextBox" & i))  Next i  SumTextBoxes = dbSum End Function

sc420
質問者

お礼

御解答頂きありがとうございました

sc420
質問者

補足

TextBox12 から、セルに入った数値の合計を求めるというのは、どういう意味でしょうね?→説明不足で申し訳御座いません。TextBox12はTextBox2の数値1~12(シート上は1月~12月)によりセル範囲あ~しのV列に入ります。 データーがまだ入力されていないので現在のセル範囲"あ"は(B1:V2) 範囲"い"は(B16:V17)となっています。"あ"の時1行目は項目、2行目は合計用となっておりユーザーフォームで入力しますと1行追加され合計用は3行目に変わりデーターが転記されるのは2行目になります。もう一件入力すると、項目が1行目、データーが2.3行目、合計が4行目と変動します。全て範囲"あ"が入力し終わり行数が変動しなければsumで合計がとれるのですが、リアルタイムでフォーム入力後、"V"(TextBox12)の合計を求めるにはどのようにすれば宜しいでしょうか?範囲"あ"~"し"それぞれのVの合計を求めたいです。説明がうまくできなくてすいません。宜しくお願い致します。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>TextBoxからセルに転記させる時に数値に変換する方法・・・ 簡単な方法は >.Cells(myDCount, 2).Value = TextBox2 を .Cells(myDCount, 2).Value = TextBox2.Value と、すればうまく行くと思います >ユーザーフォームのTextBox12からセルに入った数値の合計を求める う~ん、意味???です TextBox12で入力した V列の合計と言うこと?

sc420
質問者

補足

TextBox12 から、セルに入った数値の合計を求めるというのは、どういう意味でしょうね?→説明不足で申し訳御座いません。TextBox12はTextBox2の数値1~12(シート上は1月~12月)によりセル範囲あ~しのV列に入ります。 データーがまだ入力されていないので現在のセル範囲"あ"は(B1:V2) 範囲"い"は(B16:V17)となっています。"あ"の時1行目は項目、2行目は合計用となっておりユーザーフォームで入力しますと1行追加され合計用は3行目に変わりデーターが転記されるのは2行目になります。もう一件入力すると、項目が1行目、データーが2.3行目、合計が4行目と変動します。全て範囲"あ"が入力し終わり行数が変動しなければsumで合計がとれるのですが、リアルタイムでフォーム入力後、"V"(TextBox12)の合計を求めるにはどのようにすれば宜しいでしょうか?範囲"あ"~"し"それぞれのVの合計を求めたいです。説明がうまくできなくてすいません。宜しくお願い致します。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

Textboxに入っている値が文字列ですから、そのままセルに入れたら文字列になります。数値に変換してから入れましょう。 例: .Cells(myDCount, 2).Value = CLng(TextBox2) でも、セルに文字列で入っていても、数値ならExcelが勝手に判断して演算をする時には数値扱いするはずなんですけどね。

sc420
質問者

お礼

ありがとう御座いました。上記で数値になりましたが、型エラーが出ました。他の回答して頂いた方の意見も合わせてシートを確認したところ、シート全体が文字列の書式設定になっていました。お知恵ありがとうございました。

関連するQ&A

専門家に質問してみよう