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