症状
在 Microsoft Office Excel 中,Microsoft工作表或工作簿“后面”包含的 Visual Basic for Application (VBA) 宏代码可能无法正常工作。
原因
如果满足以下两个条件,则会发生这种情况:
- 有问题的代码包含在自动运行的子例程中,例如 Auto_Open 或 Auto_Close 子例程。
- 代码不包含在 Visual Basic 模块中,而是位于工作表或工作簿本身的“后面”。
解决方法
为了使自动运行的子例程在 Microsoft Excel 中正常工作,它们必须包含在 Visual Basic 模块中。
必须将 Visual Basic 模块插入到工作簿中,然后将代码放入新模块中。
要插入 Visual Basic 模块:
- 在 Visual Basic 编辑器的项目资源管理器中,激活包含相关代码的工作簿。
- 在“插入”菜单上,单击“模块”。
插入新模块后,从其原始位置剪切代码并将其粘贴到 Visual Basic 模块中。 然后,保存工作簿。
详细信息
在 Excel 中,VBA 代码可以存储在三个不同的位置:在 Visual Basic 模块中、在 Visual Basic 类模块中以及工作表和工作簿的“后面”。
若要编辑工作表或工作簿“后面”的代码,请执行以下操作:
- 激活 Visual Basic 编辑器 (按 ALT+F11) 。
- 在“项目资源管理器”窗口中,您将看到类似于以下内容的条目:
VBAProject (Book1)
Microsoft Excel Objects
Sheet1 (Sheet1)
Sheet2 (Sheet2)
Sheet3 (Sheet3)
ThisWorkbook
Modules
Module1
如果双击其中一个工作表名称或 ThisWorkbook,则可以在代码窗口中键入代码。 不包含在 Visual Basic 模块中的此类代码被视为位于工作表“后面”;或者
ThisWorkbook .
如果 Auto_Open、Auto_Close或其他自动运行的子例程存储在工作表或 ThisWorkbook 的“后面”,则当您打开或关闭工作簿时,或者当您执行应导致该子例程运行的操作时,它可能无法正常工作。