コントロールを引数にしたプロシージャを作るにはどうすればいいのか、
コントロールをForループに入れてやるにはどうすればいいのか。
今回は、フォームをダブルクリックしたらコントロールの .Enabled が変化するようにしたかったのでございます。
で、どうしたかというと、
VBA の場合、
Me.Controls("コントロール名")
でコントロールが返ってきます。
そこで、テキストボックスの名前を
txtTitle1
txtTitle2, ...
という具合にしておいて、
For i = 0 to N
のループの中に
Me.Controls("txtTitle" & CStr(i))
を入れました。
ついでに、
Dim cobj As TextBox
Set cobj = Me.Controls("XXXXXX")
ということもやってみたのですが、
これだとエラーが出ます。
Dim cobj As Object
とするとうまくいきます。
Private Const N As Integer = 8 '制御する TextBox の総数
'フォームがダブルクリックされたら、テキストボックスを編集不可にします。
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
Dim cobj As Object
If txtTitle1.Enabled = False Then
For i = 1 To N
Set cobj = Me.Controls("txtTitle" & CStr(i))
cobj.Enabled = True
Next i
Else
For i = 1 To N
Set cobj = Me.Controls("txtTitle" & CStr(i))
cobj.Enabled = False
Next i
End If
End Sub
コメントがつかないブログなので、役に立っているのかいないのかがわからない毎日ですw
これは、Excel VBA での話しなので、VB.NET でどうなるかはわかりません。もっと簡単な方法があるらしいが・・・。
Excel でできるってことは、Access などでもできると思う。