1

このスレッドの回答を変更して、コードで機能するようにしていますが、機能していません。

Excel vbaで複数のオブジェクトにイベントを割り当てる方法は?

いくつかの違いがあります。コンボボックスの代わりにチェックボックスを使用していますが、さらに重要なことは、実行時にチェックボックスを作成していることです。

これが私のクラスです:

Public WithEvents checkBox1 As MSForms.checkBox


Private Sub checkBox1_Click()
MsgBox "click"
End Sub'

モジュールコード:

Dim tbCollection As New Collection

Sub macro1()

Dim cbox As OLEObject
Dim myCheckBox As New JohnClass

Set cbox = ActiveSheet.OLEObjects.Add("Forms.CheckBox.1", Left:=Range("A1"))
Set myCheckBox.checkBox1 = cbox.Object
tbCollection.Add cbox
end sub

キャプションを変更できるため、新しく作成したチェック ボックスへの参照があることがわかりますが、クリックしても何も起こりません。

4

1 に答える 1

1

カスタム クラスのインスタンスをコレクションに追加する必要があります。変化する

tbCollection.Add cbox

tbCollection.Add myCheckBox

アップデート:

実行時に OLEObjects を追加して他のコードを実行すると、問題が発生するようです。何が問題なのかわかりませんが、これはうまくいくようです。

Public tbCollection As Collection

Sub macro1()

    ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1", Left:=1, Top:=1

    Application.OnTime Now, "AddToClass"

End Sub

Sub AddToClass()

    Dim myCheckBox As JohnClass

    Set tbCollection = New Collection
    Set myCheckBox = New JohnClass

    Set myCheckBox.CheckBox1 = ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count).Object
    tbCollection.Add myCheckBox

End Sub
于 2013-09-27T21:18:42.460 に答える