Excel 中的工作表或工作簿的 "背后" VBA 代码可能不起作用

有关本文的 Microsoft Excel 97 版本,请参阅 157346。有关本文的 Microsoft Excel 98 版本,请参阅 182482

症状

在 Microsoft Office Excel 中,工作表或工作簿中包含的 Microsoft Visual Basic for 应用程序(VBA)宏代码可能无法正常工作。

原因

如果同时满足以下两个条件,则会发生这种情况:

  • 所涉及的代码包含在自动运行的子例程中,例如 Auto_Open 或 Auto_Close 子例程。

  • 该代码未包含在 Visual Basic 模块中,但不包含在工作表或工作簿本身的 "背后"。

解决方法

为了让自动运行的子例程在 Microsoft Excel 中正常工作,它们必须包含在 Visual Basic 模块中。必须将 Visual Basic 模块插入到工作簿中,然后将代码放置在新模块中。要插入 Visual Basic 模块,请执行以下操作:

  1. 在 "Visual Basic 编辑器" 中的 " 项目资源管理器 " 中,激活包含有问题代码的工作簿。

  2. 在“插入”菜单上,单击“模块”。

插入新模块后,从其原始位置剪切代码,并将其粘贴到 Visual Basic 模块中。 然后,保存工作簿。

更多信息

在 Excel 中,VBA 代码可以存储在三个不同的位置:在 Visual Basic 模块中、Visual Basic 类模块中和工作表和工作簿 "背后"。若要编辑工作表或工作簿的 "隐藏" 代码:

  1. 激活 Visual Basic 编辑器(按 ALT + F11)。

  2. 在 " 项目资源管理器 " 窗口中,你将看到类似于以下内容的条目:

         VBAProject (Book1)         Microsoft Excel Objects            Sheet1 (Sheet1)            Sheet2 (Sheet2)            Sheet3 (Sheet3)            ThisWorkbook                  Modules             Module1 

如果双击其中一个工作表名称或 工作簿,则可以在代码窗口中键入代码。 不包含在 Visual Basic 模块中的此类代码被视为 "隐藏" 工作表或工作簿 。如果 Auto_Open、 Auto_Close或其他 自动运行 的子例程存储在工作表或 工作簿的 "背后",则当你打开或关闭工作簿时,或者当你执行应导致子例程运行的操作时,它可能无法正常工作。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×