足し算で教えてください。

タグの編集
投稿者 ねこ  () 投稿日時 2008/8/14 04:17:00
テキストボックスが100個あります。 
このテキストボックス100個の数字を足し算したいのですが、textbox1.text + textbox2.text,,,,,と 
延々と記述するのが大変で、なんとか簡略化できないでしょうか。 
 
このHPを見てVBをはじめて見たばかりで、初心者的な質問でごめんなさい。
投稿者 名鉄2000系  () 投稿日時 2008/8/14 09:15:00
VBのバージョンが書いてないので、とりあえずVB2002以降のものを。 
 
'フォーム上のTextBoxの値をすべて足して、MsgBoxで表示します。。 
Dim o As Control 
Dim Value As Integer 
For Each o In Me.Controls 
    If o.GetType Is GetType(TextBox) Then 
       Value += o.Text 
    End If 
Next 
MsgBox(Value) 
 
コレでいいでしょうか?
投稿者 れおです。  () 投稿日時 2008/8/14 13:05:00
いやぁ、勉強になりました。(本当です) 
Option Strict On使用では。 
Button1イベントハンドラ内に 
Dim o As Control 
Dim Value As Integer 
Try 
For Each o In Me.Controls 
If o.GetType Is GetType(TextBox) Then 
Value +=Cint(o.Text) 
End If 
Next 
Catch 
MsgBox("数字が入ってないTextがあります。") 
Return 
End Try 
MsgBox(Value) 
End Sub 
<<VB2008無料版>>
投稿者 ねこ  () 投稿日時 2008/8/15 00:48:00
>>2 >>3  
れおさん、名鉄2000系さん 
有難うございます。 
 
バージョンは無料2008版です。 
お二人のレスをみてテストフォームを作って試してみました。そしてうまくいきました。 
有難うございます。 
 
そこでもうひとつお聞きしたいんですが、テキストボックス10~100までだけ足し算とする場合は 
 
FOR~NEXTでどの様にテキストボックス名の数字をカウントするのでしょうか、教えていただいた方法だとフォーム上のオブジェクトがテキストボックスだったら+=する(この解釈でいいのかな?)みたいなので、テキストボックスの名前で足し算できればと思います。 
 
理由は一部のテキストボックスに名前とか入れたいのです。 
説明がへたでごめんなさい。 
 
>>れおさん 
テキストボックスに数字がはいっていないときのメッセージ処理はすごく勉強になりました。 
有難うございます。
投稿者 魔界の仮面弁士  () 投稿日時 2008/8/15 03:45:00
>>4 
フォームに Panel を貼って、関連する TextBox を、 
その Panel 上に移動させてみてください。 
 
そして今まで 
 For Each c As Control In Me.Controls  
で行っていた列挙処理を、 
 For Each c As Control In Me.Panerl1.Controls 
で行うようにすれば対処できるかと。
投稿者 ラキシス  () 投稿日時 2008/8/25 23:39:00
どんなコントロールでも使えるという物ではないですが、こんな書き方も出来ます。 
 
For i As Integer = 10 To 100 
    temp += Me.Controls("TextBox" & i.ToString).Text 
Next 
 
実行確認はしていないのでエラーが出たらごめんなさい。