VBA 中的私有子例程正在被其他工作簿激活 -- 为什么



>我在工作簿 A 中有一个私有子例程,每当我打开或关闭并保存其他不相关的工作簿时,它都会运行。我试图了解为什么会发生这种情况,以便我可以捕获可能发生的所有潜在错误。

子例程是一个名为 TabProg 的 ActiveX 组合框,应该在值更改时运行。我目前已添加检查以查看尝试运行代码的活动工作表是否是"程序加载"工作表,以尝试转移任何潜在错误。请参阅下面的代码片段。

Private Sub TabProg_Change()
    MsgBox "Whomp!", vbOKOnly + vbExclamation
    If ActiveSheet.Name <> "Program Loading" Then  'do nothing
    Else
       'Run desired actions on "Program Loading" sheet
    End If
End Sub

发生这种情况的任何已知原因或其他捕获它的方法都会有所帮助。谢谢!

编辑1:当我在Excel的新实例中打开其他工作簿时,我没有看到此问题发生。

编辑2:我已经修改了代码,以便在代码尝试运行时包含一个消息框,现在如上所示。每次我打开或关闭并保存任何 Excel 文件(包括文件本身)时都会发生这种情况。ActiveX 组合框中的下拉列表是对应于工作簿 A 中的 10 个工作表的名称列表。如果我删除 ComboBox 当前设置为的工作表,错误将消失。如果我将组合框更改为其他工作表,错误将再次出现。

从你在问题中写的内容来看,我认为你的问题无法复制。我认为您的 Excel 文件已损坏。我有这样的经历:有一个用于试验宏的文件,其中一个宏使用 Excel 语音对象在打开该特定文件时说"这是一个测试文件"。该宏(与此文件中的所有其他宏一样)不是我的个人工作簿的一部分,它被分配给定制文件中的 ThisWorkbook。在某个时候发生了一件有趣的事情:每次我打开任何 Excel 文件时,这个"这是一个测试文件"私有子程序都会被激活。我没有找到任何解决方案,我只是删除了存储子例程的文件。这解决了问题,但我对此没有任何解释。恐怕同样的事情可能适用于您的文件,但也许其他人有更好的主意......也许是系统注册表中的内容???我不知道。您可以手动将此文件中的元素/代码复制到新创建的文件并删除原始文件吗?

最新更新