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

时间:2015-01-26 21:48:43

标签: excel vba excel-vba excel-2010 activexobject

我在 工作簿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 ComboBox中的下拉列表是与 Workbook A 中的10张相对应的名称列表。如果我删除ComboBox当前设置的工作表,错误将消失。如果我将ComboBox更改为其他工作表,则会再次出现错误。

1 个答案:

答案 0 :(得分:0)

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