Я уже боролся с этой проблемой ... Я хочу сделать что-то очень простое. Я хочу создать несколько командных кнопок во время выполнения, а затем обработать события для этих команд с помощью одной процедуры. Поэтому я создал класс «withevents» для автоматизации, но мой код не работает. Когда я запускаю Test(), создается CommandButton, но когда я нажимаю на него ... ответа на сообщение нет ... Я не могу найти ошибку. Пожалуйста, любая помощь будет большой!Работа с событиями для OLEObject CommandButtons, созданная в Runtime
Класс CTest
Public WithEvents Button As MSForms.CommandButton
Public Sub Button_Click()
s = MsgBox("Hello", vbOKOnly)
End Sub
Модуль 1
Public TestCollection As Collection
Sub Test()
Set TestCollection = New Collection
Dim Btn As CommandButton
Dim OLEBtnObj As cTest
Set OLEBtnObj = New cTest
Set Btn = Sheet1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", link:=False,_ DisplayAsIcon:=False, Left:=368.25, Top:=51, Width:=44.25, Height:=24).Object
Set OLEBtnObj.Button = Btn
TestCollection.Add Item:=OLEBtnObj
End Sub
Я считаю, что элементы управления рабочими таблицами (.OLEObjects.Add), похоже, повторно скомпилируют проект. Если вы хотите, попробуйте работать с элементами управления Form и назначьте ему событие .OnClick, или если вы все еще хотите использовать ActiveX Control, попробуйте этот http://stackoverflow.com/questions/10633387/programatically-inserting-click- event-code-for-dynamic-generated-label-not-w –