我有一个适用于各个部门的工作簿系统,每个部门都有auto_open宏。我还有一个控制工作簿,可以根据需要运行自己的宏来打开系统中的每本书并收集信息。它通常很有效。
但是,当调试中央工作簿中的宏变得必要时,单步执行命令以使用auto_open打开任何支持书籍将颠覆调试器并导致其余代码执行,就像F5键已经执行一样按压。
我查找了一个调试设置来防止这种情况,以及任何可能在没有运气的情况下改变此行为的“Open”方法参数。谷歌的搜索也毫无结果。有没有办法告诉Excel调试器在这种情况下维护程序控制?帮助我stackoverflow,你是我唯一的希望。
答案 0 :(得分:1)
正如我们所观察到的,Workbooks.Open
方法不会触发Auto_Open
事件,因此在打开新工作簿后,在“控制”工作簿中放置断点将不允许您输入您可能需要执行和调试代码。
一种解决方法是插入一行代码,其中包含一个手动调用Auto_Open
过程的断点。这应该允许您调试打开的书籍的每个中的代码:
Sub test()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\path_to\your_file.xlsm")
Application.Run wb.Name & "!Auto_Open" '// PUT BREAKPOINT HERE!
End Sub
或者,按照建议HERE,将Auto_Open
事件中的代码移植到Workbook_Open
事件。
我应该早点考虑到这一点......我只使用过Auto_Open
和XLA / XLAM加载项文件,而不是Workbook_Open
事件应该足够的普通工作簿文件。