症状
在 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 类模块中,以及“隐藏”工作表和工作簿。
要“隐藏”工作表或工作簿编辑代码,请执行以下操作:-
(按 Alt+F11) 激活 Visual Basic 编辑器。
-
在“项目资源管理器”窗口中,你将看到类似于以下内容的条目:
VBAProject (Book1)
Microsoft Excel Objects
Sheet1 (Sheet1)
Sheet2 (Sheet2)
Sheet3 (Sheet3)
ThisWorkbook
Modules
Module1
如果双击工作表名称之一或 ThisWorkbook,则可以在代码窗口中键入代码。 未包含在 Visual Basic 模块中的此类代码被视为工作表的“隐藏”,或者
ThisWorkbook 。 如果Auto_Open、Auto_Close或其他自动运行的子例程存储在工作表或 ThisWorkbook 的“后面”,则当您打开或关闭工作簿时,或者执行应导致子例程运行的操作时,该子例程可能无法正常运行。