●詳細●
3つのテキストボックスとその他のコントロールが複数配置されているフォームで、開く際にすべてのテキストボックスのプロパティを設定するには、For Each...Nextステートメントを使って、フォーム上に配置されているすべてのコントロールを取得します。
For Each...Nextステートメントは、コントロールの各要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。
繰り返し処理の中で、参照しているコントロールがテキストボックスかどうかを判断して、テキストボックスであったらプロパティの設定をします。
●準備●
フォームに3つのテキストボックスと、そのほかのコントロールを複数配置してください。
フォームのプロパティシートを表示して、[イベント]タブの[開く時]のドロップダウン矢印「▼」をクリックして、リストから[イベントプロシージャ]を選択してください。
右側のイベントプロシージャ表示ボタン[...]をクリックして、VBEを起動させ、表示されたコードウィンドウに次の処理を記述します。
●サンプル●
Private Sub Form_Open(Cancel As Integer)
Dim myCtl As Control
Dim i As Integer
'Controlsコレクションを列挙します。
For Each myCtl In Me.Controls
'コントロールがテキストボックスかどうかをチェックします。(1)
If myCtl.ControlType = acTextBox Then
'テキストボックスのプロパティを設定します。
With myCtl
i = i + 1
MsgBox i & "つめのテキストボックスにフォーカスを移します"
.SetFocus
If i = 2 Then
MsgBox i & "つめのテキストボックスの高さを変えます"
.Height = 400
End If
MsgBox i & "つめのテキストボックスを浮き出し表示します"
.SpecialEffect = 1
MsgBox i & "つめのテキストボックスの背景色を設定します"
Select Case i
Case 1
.BackColor = RGB(0, 0, 0) 'Black
Case 2
.BackColor = RGB(255, 255, 0) 'Yellow
Case Else
.BackColor = RGB(255, 0, 0) 'Red
End Select
End With
End If
Next myCtl
End Sub
●補足説明●
- ControlTypeプロパティは、コントロールの種類を示します。
組み込み定数についてはヘルプの「ControlTypeプロパティ」を参照してください。
- サンプルを実行すると、フォームが開かれると同時に、1つめのテキストボックスから順にプロパティが設定されていきます。
高さが変更されるのは2つめのテキストボックスのみで、背景色はそれぞれのテキストボックスで違い、すべてのテキストボックスが浮き出し表示されます。