- ベストアンサー
コントロール配列のループ
タイトルどおりなのですが、コントロール配列の最初から最後までループさせるにはどうすればいいんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
なんか日本語とサンプルも変だったので言い直します。 コントロール配列は、Indexが順番通りに振られている時はimogasi氏の言う通りでいいと思いますが、空き番号があるならば「For Each ~ In ~ 」を使用しましょう。 下記サンプルは、各テキストボックスのテキストに、コントロールのIndex値をセットします Dim txtWk As TextBox For Each txtWk In Text1 txtWk.Text = txtWk.Index Next txtWk
その他の回答 (3)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
コントロール配列は、Indexが順番通りに振られているとはimogasi氏のいう通りいいと思いますが、空き番号があるならば「For Each ~ In ~ 」を使用しましょう。 下記サンプルは、各テキストボックスのテキストに、コントロールのIndex値をセットします Dim txtWk As TextBox For Each txtWk In Text1 txtWk.Text = .Index Next txtWk
- imogasi
- ベストアンサー率27% (4737/17070)
下記の実例で判って下さい。 Form1にTextBoxのText1を4つコピーしました。コントロール配列にします。計5つテキストボックスが出来ます。 コマンドボタンを1つ貼り付けます。 コマンドボタンのClickイベントプロシージュアーとして Private Sub Command1_Click() MsgBox text1.Count For i = 0 To text1.Count - 1 MsgBox text1(i).Text Next i End Sub のコードを作りました。 実行し5つのテキストボックスの値を適当に変えます。 コマンドボタンをクリックすると、5つの値が 順次表示されます。
お礼
なるほど!Countを使う方法もありましたね。最近、PGから離れていたので 忘れていました。回答ありがとうございました。
- taknt
- ベストアンサー率19% (1556/7783)
on error を 用いて 存在しない配列をアクセスしたら、終了させるという手もあります。 基本的には、配置した時点で 配列が いくつあるのかわかると思いますので、 その数分だけループさせたらいいはずですが・・・。
お礼
回答ありがとうございます。 字足らずでしたm(__)m。コントロールは動的なのとスマートな書き方を追究していました。
お礼
ずばり知りたかった方法です。これでうまくできそうです。 回答ありがとうございました。