• ベストアンサー

コントロール配列のループ

タイトルどおりなのですが、コントロール配列の最初から最後までループさせるにはどうすればいいんでしょうか?

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

なんか日本語とサンプルも変だったので言い直します。 コントロール配列は、Indexが順番通りに振られている時はimogasi氏の言う通りでいいと思いますが、空き番号があるならば「For Each ~ In ~ 」を使用しましょう。 下記サンプルは、各テキストボックスのテキストに、コントロールのIndex値をセットします Dim txtWk  As TextBox For Each txtWk In Text1   txtWk.Text = txtWk.Index Next txtWk

noname#6037
質問者

お礼

ずばり知りたかった方法です。これでうまくできそうです。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

コントロール配列は、Indexが順番通りに振られているとはimogasi氏のいう通りいいと思いますが、空き番号があるならば「For Each ~ In ~ 」を使用しましょう。 下記サンプルは、各テキストボックスのテキストに、コントロールのIndex値をセットします Dim txtWk  As TextBox For Each txtWk In Text1   txtWk.Text = .Index Next txtWk

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記の実例で判って下さい。 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つの値が 順次表示されます。

noname#6037
質問者

お礼

なるほど!Countを使う方法もありましたね。最近、PGから離れていたので 忘れていました。回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

on error を 用いて 存在しない配列をアクセスしたら、終了させるという手もあります。 基本的には、配置した時点で 配列が いくつあるのかわかると思いますので、 その数分だけループさせたらいいはずですが・・・。

noname#6037
質問者

お礼

回答ありがとうございます。 字足らずでしたm(__)m。コントロールは動的なのとスマートな書き方を追究していました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBのコントロール配列を二次元配列にする方法

    タイトル通りです。 テキストボックスなどをコントロール配列で持つときに二次元配列で持つ方法はないでしょうか? ご回答の方、宜しくお願いします。

  • 配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?

    お世話になっております。 タイトル通りの質問です。 日付がファイル名になっているCSVファイルが複数あるのですが、 それをそのまま「array20071020」などという名前の配列に、それぞれ入れて行きたいと思います。ループ処理でなければ出来ないと思うのですが、ループ処理内で配列を宣言していく方法はあるでしょうか。

  • コントロールが配列かどうかを知るには?

    Visual Basic6.0(SP5)で伺いたいことがあります。 フォーム上の全てのオブジェクトを For Each文で取得しています。以下の様にです。 Dim Control As Object For Each Control In Form1.Controls If TypeOf Control Is Text Then End If Next Control このとき個々のControlがコントロール配列かどうかを知りたいのですが、どうすればよろしいでしょうか?フォーム上にはコントロール配列のオブジェクトも、コントロール配列ではないオブジェクトもあります。 Control.Indexの値を参照しようとしても、コントロール配列でない場合は 「配列ではないオブジェクトです」とエラーになります。 IsArray関数でもFalseになってしまいます。 何を行いたいかというと、そのControlがコントロール配列(Text1(0)とかText1(1)とか)かどうかを調べて、そのIndexをある関数の引数にしたいのです。全てコントロール配列だったら、Control.Indexで値を取得できるのですが。 よろしくお願いします。

  • 普通のコントロールをコントロール配列に変更する方法

    ボタンがたくさんあるプログラムを作っていて、拡張していくうちにますますボタンの数が増えてしまいました。 最初からコントロール配列にしておけばよかったと後悔していますが、 いまからコントロール配列に変更する方法はありますか。 プロパティ設定なども細かく行っているので、最初から作り直すのはつらいです。

  • コントロール配列の多次元配列

    http://dobon.net/vb/dotnet/control/buttonarray.html のサイト内の、「"特定の名前" + "1から連続する数字"」という名前を持つコントロールを配列にするメソッドを使用してのコントロール配列の多次元配列の方法はどのようにすれば良いでしょう?今現在調べている最中ですがよくわかりません。よろしくお願いいたします。

  • VisualC++でコントロール配列

     Visual C++において、VBのコントロール配列のような事をすることはできるのでしょうか?  たとえば、VBでコントロールをコピーアンドペーストして10個作った際、コントロールは  Control(1).Caption="どうのこうの"  として扱うことができますよね。  このようなまるで配列(?)のような機能は、VC++では使えるのでしょうか?  もし使えるのでしたら、どのように使えばいいのでしょうか?教えてください。

  • 配列生成される限り、ループしたい

    function arrayxml (){ urlで取得したXMLから、配列を取得 return $hairetu; //戻り値は多次元配列 } $data = arrayxml(); $cnt = count($data); do { for ($i=0; $i < $cnt; $i++) { $data = arrayxml($data[$i][0]); } } while (count($data) > 0); //関数によって配列が作られる限り このスクリプトではループはうまくされません。 $data = arrayxml($data[$i][0]);を--->arrayxml($data[$i][0]);にすると $cnt分ループされますが、do~whileのループはなされません。 関数で配列が生成される限り、do~whileループをさせたいのですが正しい方法を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Delphiでのコントロールの配列について

    Delphi6.0を使用しているのですが、コントロールの配列は出来ないのでしょうか? Visual BasicではコントロールにIndexを指定することでコントロール配列を取り扱っていましたが、Delphiでの方法がわかりません。 実現したいことは、ウィンドウサイズ変更によってその内部の約50近いコントロールのサイズを均一のサイズに変更したいのです。 上手く伝わっているかどうかわかりませんが、御回答宜しくお願い致します。

  • コントロール配列の動的配置について

    ソース上でコントロール配列を動的に配置する場合の手法が解りません。 フォーム上に貼り付けられたコントロール配列を、動的に可変させるにはLOAD/UNLOADなどで良いようですが、1つめの要素(0)から動的に生成させる事は出来ないものでしょうか? ご存知の方いらっしゃいましたら、よろしく手ほどきのほどお願いいたします。

  • Perl/配列のループに関して教えてください。

    my @shop = [ {'start_hour'=> '1100','shift'=> [1,2] }, {'start_hour'=> '1130','shift'=> [1,3] } ] という配列があってそれをループで回したいのですが、 ▼以下だとNG foreach my $data (@shop){print $data->{start_hour};} ▼以下だと最初の1つだけOK foreach my $data (@shop){print $data->[0]->{start_hour};} という状況です。なぜ$data->{start_hour};で取得できないのでしょうか? 助けて頂けるとうれしいです★

    • ベストアンサー
    • Perl
甘いもの中毒からの脱却方法
このQ&Aのポイント
  • 私は1日12時間の交替勤務で、仕事が終わると疲れて甘いものを欲してしまう。
  • 甘いものを完全に断つことは難しいが、1週間のうち2日程度までに減らすことを目指す。
  • 同じような境遇の人が甘いものを減らす方法を知っているか教えてほしい。
回答を見る