我正在创建一个excel加载项(.xlam
),需要在所有打开的工作簿中选择性地响应工作簿/工作表事件(用户可能打开多个工作簿)。我不希望将代码粘贴到其他打开的工作簿的ThisWorkbook
模块中。
我希望用户能够选择加载项是否会响应活动工作簿的事件。
实现这一目标最合适的解决方案是什么?
目前,我正在考虑一个如下所示的解决方案:
启用加载项以通过cls_AppEvents
类(cls_AppEvents
实例化Workbook_open()
)来监听应用程序级事件。
当用户点击按钮时,将ActiveWorkbook.Name
添加到一组蜇伤中。当用户再次单击按钮时,从数组中删除“ActiveWorkbook.Name”。(这需要是一个动态数组 - 有更好的选择吗?)
当应用程序级TableUpdate
(例如)事件触发时,检查工作簿名称数组以查看它是否包含事件源自的工作簿名称。如果是这样,请调用任何函数。