- 締切済み
VBA 整数加算の方法
初歩的なことだとは思いますがエクセルVBAで ラベル1にテキストボックス1~40までの 総数(整数)を加算する時はLabel1=Val(Textbox1)+val(Textbox2)+・・・ +Val(Textbox40)とゆうふうに並べるのではなく簡単に する方法を教えていただきたいのですが?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
> 今回は入力するところをテキストボックス、 > 確認するところはラベルを使用しただけですが・・・ VBAということなので、多分フォームをお使いだと推察しますが、通常、ラベルは表題やテキスト・ボックスの項目名など、固定的なものの表示に使い、 テキスト・ボックスの合計なども一般的にはテキスト・ボックスを使いますので、てっきり「深ーい事情があるのかな」と思ったもので... また、EXCELの場合、元々表計算ソフトなので、わざわざフォームとVBAを使わなくても、セルを使って簡単にSUM(A1:A40)などとすれば良いように思いますし... よくEXCELを表計算ソフトと認識しておらず、「表形式のワープロ」と誤認識していて、ときどき、「ワードとエクセルは何が違うの」という質問されることがあります。 まさか、そう認識されてませんよね?
具体的方法は他の方々がお答えされていますが、 何故、テキストボックスでなくラベルに集計結果を表示されたいのか 後学の為にお教え願いますか?
- taocat
- ベストアンサー率61% (191/310)
こんばんは。 お、頑張ってらっしゃいますねぇ。 隠しオブジェクトTexBoxesを使わない方法を。 '----------------------------------------------------------- Private Sub CommandButton1_Click() Dim Kei As Long Dim K As Integer For K = 1 To 40 Kei = Kei + CLng(Me.Controls("TextBox" & K).Text) Next K Label1.Caption = Format(Kei, "#,##0") End Sub '---------------------------------------------------------- Val関数は、Format関数などでTextBoxの表示を、 12,345 と3桁区切りにしていた場合、頭の、12しか取れませんので CLng関数等で数値に変換して計算させることをお勧めします。 また、Labelへの表示も、1000以上になる時は、 Format関数で3桁区切りで表示した方が見やすいでしょう。 以上です。
お礼
すみません。説明が悪いため、皆さん少々違ったとらえ かたをされたようです。 上記の親切な回答有難うございます。 別の意味で参考になりました。
- Ce_faci
- ベストアンサー率36% (46/127)
こんばんわ FOR...NEXT で40回加算するのは? Label1=0 FOR I = 1 to 40 Label1 = Label1 + ACTIVESHEET.TEXTBOXES("Text Box " & I).TEXT NEXT
お礼
すみません。説明が悪いため、皆さん少々違ったとらえ かたをされたようです。 上記の回答も別のところで活用させていただきました。 有難うございました。
- zap35
- ベストアンサー率44% (1383/3079)
Dim idx ,Amount As Integer For idx = 1 to 40 Amount = Amount + Val(UserForm1.TextBoxes(idx).text) Next ではどうですか? テキストボックスの値が数値でない場合のチェックなどは追加される方が良いと思います。 (すみませんがテストはしていません)
お礼
すみません。説明が悪いため、皆さん少々違ったとらえ かたをされたようです。 ちょっと、自分には回答の意味がわからないのですが? すみません。
お礼
すみません。何かあるかわかりませんが、 今回は入力するところをテキストボックス、 確認するところはラベルを使用しただけですが・・・