|
▼年寄り さん、▼WASI さん、こんにちは。
例えば、Userform1にテキストボックスが
TextBox1 TextBox2 TextBox3 TextBox4
TextBox5 TextBox6 TextBox7 TextBox8
TextBox9 TextBox10 TextBox11 TextBox12
TextBox13 TextBox14 TextBox15 TextBox16
TextBox17 TextBox18 TextBox19 TextBox20
TextBox21 TextBox22 TextBox23 TextBox24
というように6行4列に配置されているとしましょう。
他にコントロールがあってもかまいません。
方法は、配列に入れてしまおうということなんですが・・・。
Userform1のモジュールに
'============================================================
Private tbltxt(1 To 6, 1 To 4) As MSForms.TextBox
'=============================================================
Private Sub UserForm_Initialize()
For y0 = LBound(tbltxt(), 1) To UBound(tbltxt(), 1)
For x0 = LBound(tbltxt(), 2) To UBound(tbltxt(), 2)
Set tbltxt(y0, x0) = Controls("textbox" & UBound(tbltxt(), 2) * (y0 - 1) + x0)
Next x0
Next y0
End Sub
'というように予め配列に入れてしまうのです。
'こうしておけば、例えば Commandbutton1のクリックで
'===========================================================
Private Sub CommandButton1_Click()
Dim t_row As Variant
Dim t_col As Variant
t_row = Application.InputBox("input row", , , , , , , 2)
t_col = Application.InputBox("input column", , , , , , , 2)
MsgBox tbltxt(t_row, t_col).Name
'↑細かいエラー処理してませんから、存在する行と列を指定してください
End Sub
とうように行番号と列番号によって、相当するテキストボックスが取得できます。
確認してください。
|
|