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
● 補足説明 ●
(1)ControlTypeプロパティは、コントロールの種類を示します。
組み込み定数についてはヘルプの「ControlTypeプロパティ」を参照してください。
(2)サンプルを実行すると、フォームが開かれると同時に、1つめのテキストボックス
から順にプロパティが設定されていきます。高さが変更されるのは2つめのテキスト
ボックスのみで、背景色はそれぞれのテキストボックスで違い、すべてのテキスト
ボックスが浮き出し表示されます。
|