Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WithEvents声明的COM对象时禁用Excel按钮_Excel_Vba_Events_Com - Fatal编程技术网

使用WithEvents声明的COM对象时禁用Excel按钮

使用WithEvents声明的COM对象时禁用Excel按钮,excel,vba,events,com,Excel,Vba,Events,Com,我有一张Excel表格,上面有一个按钮(ActiveX版本)。 在按钮单击代码中,我使用的是COM对象。我需要捕获事件,以便使用WithEvents声明对象 Option Explicit Private WithEvents m_object As MyObjectWithEvents Private Sub Button_Click() Set m_object = New MyObjectWithEvents m_object.DoStuff End Sub 在添加代码之后,

我有一张Excel表格,上面有一个按钮(ActiveX版本)。 在按钮单击代码中,我使用的是COM对象。我需要捕获事件,以便使用WithEvents声明对象

Option Explicit

Private WithEvents m_object As MyObjectWithEvents

Private Sub Button_Click()
  Set m_object = New MyObjectWithEvents
  m_object.DoStuff
End Sub
在添加代码之后,它就工作了。但在关闭并重新打开工作簿后,该按钮将停止工作。 按钮仍然可以单击,但什么也没发生。Button_Click()不再被调用。另一件奇怪的事情是,鼠标悬停在按钮上会显示一个十字(比如当你在单元格上时),而不是通常的鼠标箭头

一旦我删除了with events关键字,按钮就会再次工作,也就是说,按钮点击会被执行

将所有这些从工作表代码中移到类中是可行的。但我还是很好奇会发生什么。听起来像是安全问题,但我在网上找不到任何东西


你知道发生了什么吗?

这还不清楚。按钮是否停止触发其单击事件,或者MyObjectWithEvents是否不再触发其事件?你有没有将m_对象设置为零?按钮停止触发其“均匀点击”。我编辑过,希望它更清晰。