我一直在努力解决这个问题,现在...我想做一些非常简单的事情。我想在运行时创建多个commandbutton,然后用一个过程处理这些commandbutton的事件。所以我建立了一个“withevents”类来处理自动化,但是我的代码没有工作。当我运行Test()时,CommandButton被创建,但是当我点击它时...没有消息框响应...我找不到错误..请任何帮助都会很棒!在运行时创建的OLEObject命令按钮的处理事件
类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 Controls并为其分配一个'.OnClick'事件,或者如果你仍然想使用ActiveX控件,那么试试这个http://stackoverflow.com/questions/10633387/programatically-inserting-click- event-code-for-dynamic-generated-label-not-w – 2013-02-21 07:04:51