こんにちはすべて私は、動的に作成されたコンボボックスとテキストボックスをクリックして、userformにクリックイベントを持たせることができる次のVBAコードを持っています。コンボボックスとテキストボックスのVBA動的配列クリックイベント
ユーザーフォーム:
Option Explicit
Dim comboboxBoxColct As New Collection
Dim textboxBoxColct As New Collection
Private Sub UserForm_Activate()
Dim comboboxEvent As Class1
Dim textboxEvent As Class1
'..lots more code within here
If LCase(TypeName(controller(i))) = "combobox" Then
Set comboboxEvent = New Class1
Set comboboxEvent.comboboxBox = controller(i)
comboboxBoxColct.Add comboboxEvent
ElseIf LCase(TypeName(controller(i))) = "textbox" Then
Set textboxEvent = New Class1
Set textboxEvent.textboxBox = controller(i)
textboxBoxColct.Add textboxEvent
End If
End Sub
のClass1:
Option Explicit
Public WithEvents comboboxBox As MSForms.ComboBox
Public WithEvents textboxBox As MSForms.TextBox
Private Sub comboboxBox_Click()
MsgBox "worked"
End Sub
Private Sub textboxBox_Click()
MsgBox "worked"
End Sub
コンボボックスのためにそれを使用している場合、上記のコードがうまくに動作します。しかし、ののテキストボックスに入ると、msgboxポップアップは表示されません。それはを探している可能性があり代わりに何の数がのででその出発代わりの配列であるよう
私はそれは、そのボックスの配列番号としなければならないことが推測していますは、それが見ているアレイの最初のテキストボックスです。
私はそれらを同じアレイ内で動作させるために何ができますか?
「textboxBox」は本当ですか? ;-) FWIW文字列型の 'TypeName'チェックの代わりに' If TypeOf controller(i)Is MSForms.TextBox'を使用したいと思います。私は、 'controller'配列がどのように埋め込まれているのかを見なければならないかもしれないと思います。 –