ExcelVBA技
ユーザーフォーム
E13U002
E13U002 (Excel2000~2013)
ユーザーフォームのコントロールを配列のように扱う
ユーザーフォームやコントロールを配列として扱いFor~Next文などで簡潔に記述するにはControlsコレクションを用います。 Controlsコレクションを用いるとユーザーフォーム名やコントロール名を文字列として扱えるので任意な記述が出来ます。 これで長々と繰り返しコードを書かなくて済みます。 一例を示します。 複数のTextBoxがあってオブジェクト名はTextBox1~TextBox3と連続しているものとし、コードはフォームモジュールに記述するものとします。
Dim ii& For ii = 1 To 3 Controls("TextBox" & ii).Value = ii Next
又はMeキーワードを使うことも出来ます。Meキーワードはクラスモジュール又はフォ-ム内のプロシージャ(Sub,Function)で使用できます。現在のフォーム(Formクラスの現在実行中のインスタンス)を表す変数と同様に動作します。
Dim ii& For ii = 1 To 3 Me("TextBox" & ii).Value = ii Next End Sub
実際に配列にして扱うには次のようになります。
Dim ctl(1 To 3) As Object, ii& For ii = 1 To UBound(ctl) Set ctl(ii) = Me("TextBox" & ii) Next ' For ii = 1 To UBound(ctl) ctl(ii).Value = ii Next