工作表或工作簿“后面”的 VBA 代码可能无法在 Excel 中正常工作

症状

在 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. 激活 Visual Basic 编辑器 (按 ALT+F11) 。
  2. 在“项目资源管理器”窗口中,您将看到类似于以下内容的条目:

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

如果双击其中一个工作表名称或 ThisWorkbook,则可以在代码窗口中键入代码。 不包含在 Visual Basic 模块中的此类代码被视为位于工作表“后面”;或者
ThisWorkbook .

如果 Auto_Open、Auto_Close或其他自动运行的子例程存储在工作表或 ThisWorkbook 的“后面”,则当您打开或关闭工作簿时,或者当您执行应导致该子例程运行的操作时,它可能无法正常工作。