症状

在 Microsoft Office Excel 中,工作表或工作簿“后面”包含的 Microsoft Visual Basic for Application (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. (按 Alt+F11) 激活 Visual Basic 编辑器。

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

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

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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。