自动打开子VBA

Hidefguy

我有一个宏,该宏会自动使用以下命令打开双击Excel工作簿:Sub Auto_Open()在模块中包含脚本,但是在VB编辑器中的同一脚本中ThisWorkbook,没有模块使用:Private Sub Workbook_Open()不起作用。

任何想法为何,直接从中自动打开有什么优势ThisWorkbook如果可以实现后者,那么我不需要任何模块。

马修·金登(Mathieu Guindon)

[Public] Sub Auto_Open()标准/过程模块中的旧方法/旧方法。除了其名称外,没有什么可以说“该过程在首次打开工作簿时自动运行”,如何将其连接起来以在Open上运行是一种魔力:同名的公共过程在open上运行,如果您拥有一个公共过程,谁知道呢?两个不同模块中的两个这样的过程。该名称也不是标准的:这里没有遵循公认的,相当熟悉的Interface_Member约定(两个标识符之间带有下划线):AutoExcel对象模型中没有对象。

Private Sub Workbook_Open()是一个事件处理程序,用于处理实现接口Open事件像一样,它在打开工作簿时运行,但是其机制更加透明,并且与其他所有事件处理过程完全一样:是接口,是事件/成员。WorkbookThisWorkbookAuto_OpenWorkbookOpen

这是一个Workbook事件,具有有趣的含义:(通过VBA代码)以编程方式打开的工作簿将始终在启用宏的情况下打开-如果该工作簿具有Workbook_Open处理程序,则该宏将运行-但是,这是一个实际事件,因此您的调用代码可以决定使用关闭它Application.EnableEvents = False

至于它没有运行,我可以想到的唯一原因是禁止宏安全性设置,如果名称中有错字。永远不要手动键入事件处理程序签名-通过使用代码窗格顶部的下拉菜单,您可以使VBE为您生成正确的事件处理程序签名。

您知道您正在查看事件处理程序过程,其中左侧下拉列表包含对象/接口的名称,而右侧下拉列表包含事件/成员的名称:

Workbook_Open:左侧为“工作簿”,右侧为“打开”

WorkbookOpen:左侧为“(常规)”,右侧为“ WorkbookOpen”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章