Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel调试模式失败_Excel_Vba_Debugging_Mode - Fatal编程技术网

Excel调试模式失败

Excel调试模式失败,excel,vba,debugging,mode,Excel,Vba,Debugging,Mode,我有一套适用于各个部门的工作簿系统,每个部门都有自动打开的宏。我还有一个控制工作簿,可以根据需要运行自己的宏来打开系统中的每本书并收集信息。它通常工作得很好 但是,当需要调试中央工作簿中的宏时,单步执行命令以自动打开方式打开任何支持书籍将破坏调试器,并导致剩余代码像按F5键一样执行 我寻找了一个调试设置来防止这种情况,以及任何“打开”的方法参数,这些参数可能会在没有运气的情况下改变这种行为。谷歌搜索也毫无结果。在这种情况下,有没有办法告诉Excel调试器维护程序控制?帮助我stackoverfl

我有一套适用于各个部门的工作簿系统,每个部门都有自动打开的宏。我还有一个控制工作簿,可以根据需要运行自己的宏来打开系统中的每本书并收集信息。它通常工作得很好

但是,当需要调试中央工作簿中的宏时,单步执行命令以自动打开方式打开任何支持书籍将破坏调试器,并导致剩余代码像按F5键一样执行


我寻找了一个调试设置来防止这种情况,以及任何“打开”的方法参数,这些参数可能会在没有运气的情况下改变这种行为。谷歌搜索也毫无结果。在这种情况下,有没有办法告诉Excel调试器维护程序控制?帮助我stackoverflow,你是我唯一的希望。

正如我们所观察到的,
工作簿.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
或者,按照建议,将代码从
自动打开
事件移植到
工作簿打开
事件


我早该想到的。。。我只在XLA/XLAM加载项文件中使用过
Auto\u Open
,从未在普通工作簿文件中使用过
workbook\u Open
事件

尝试此操作时,
Workbooks.Open
方法将打开一个文件,但不会触发
Auto\u Open()
子例程。您试图在哪个工作簿中调试代码?如果它是“控制”工作簿,只需在
工作簿.Open
调用后放置一个断点,以允许您继续调试。David,运行时,工作簿将打开,并且不会触发自动打开,这是正确的。这使得调试行为对我来说更为特殊。如果我确信错误仅限于控制工作簿,则在Open语句之后暂停可以解决我的问题。我担心两者之间的一些交互可能会导致问题,理想情况下,我希望在两个工作簿中逐步完成代码。对。。。好吧,我有个主意。。。我将发布一个简短的回答。不完美,但我认为它会解决你的迫切需要。你有机会尝试这个答案吗??