投稿日 | : 2004/03/30(Tue) 20:10 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: コントロール名と配列 |
幾つかの手法が考えられます。
案1:
'コントロール名はループさせない
Dim i As Integer
For i = 0 To 2
Text1(i).Text = "AAA"
Text2(i).Text = "AAA"
Next
案2:
'全コントロールを列挙し、コントロール名で判断
Dim Ctrl As Control
For Each Ctrl In Controls
If Ctrl.Name Like "Text[12]" Then
If Ctrl.Index = 0 Or Ctrl.Index = 1 Or Ctrl.Index = 2 Then
Ctrl.Text = "AAA"
End If
End If
Next
案3:
'For Eachでコントロール配列の配列を列挙
Dim TextBoxes As Variant
Dim i As Integer
For Each TextBoxes In Array(Text1, Text2)
For i = 0 To 2
TextBoxes(i).Text = "AAA"
Next
Next
案4:
'Controlsコレクションにコントロール名を指定
Dim num As Integer
Dim i As Integer
For num = 1 To 2
For i = 0 To 2
Controls("Text" & CStr(num))(i).Text = "AAA"
Next
Next
案5:
'処理したいコントロールを集めたコレクション(または配列)を用意しておく
Option Explicit
Private MyTextBoxes As Collection
Private Sub Form_Load()
'コレクションとして登録しておく
Set MyTextBoxes = New Collection
MyTextBoxes.Add Text1(0)
MyTextBoxes.Add Text1(1)
MyTextBoxes.Add Text1(2)
MyTextBoxes.Add Text2(0)
MyTextBoxes.Add Text2(1)
MyTextBoxes.Add Text2(2)
End Sub
Private Sub Command1_Click()
'登録しておいたコレクションを使って処理
Dim Txt As TextBox
For Each Txt In MyTextBoxes
Txt.Text = "AAA"
Next
End Sub