Excel 2016 VBA Workbooks.Open 失去调试步骤模式.. 重新访问

Excel 2016 VBA Workbooks.Open Loses Debug Step Mode.. revisited

类似于之前的线程*,当我在 Excel 2016 中进入一个 VBA sub 然后进入语句时:

Workbooks.Open 文件名:= "C:\file2"

文件打开正常,但在 return 上,子程序的其余部分只是执行到最后(我失去了进入模式的步骤)。

我是运行 Windows 10 在 64 位机器上,32 位版本的 Office 专业增强版 2016

*以下link描述了同样的问题: 但是 'ideal' 解决方案是在 workbooks.open line.This 在 Excel 2016 中不起作用之后添加一个断点 - 例程停止但在第一次按下 F8 时例程完成到结束。

这里描述了同样的问题:

http://blog.contextures.com/archives/2014/09/04/excel-vba-problem-with-step-into-f8/ 但该解决方案(需要更改注册表)适用于 Excel 的早期版本并且不适用于 Windows 10/Office 2016.

这是一个阻碍有效调试的令人沮丧的问题。 Microsoft Pro 支持已将我引导至 Excel 论坛。所以我们在这里.. :)

热烈欢迎任何修复的想法。

我遇到过你描述的问题,对我来说以下方法有效:

1) 而不是 Workbooks.Open Filename:= "C:\file2" 使用变量,例如:

Dim wk as Workbook, sh as worksheet, path as string
path = "C:\file2"
Set wk = Workbooks.Open(path)
Set sh = ActiveSheet
'etc...

这允许您在打开文件的行之前和之后放置断点,这样您就可以再次单步执行代码。执行文件 input/output 行会导致 Excel 宏只是 运行 代码,而不是在这些行之后步进。此外,分配变量是一种很好的做法,因为它可以让您解决代码中的问题。但请注意,打开多个工作簿后,您需要跟踪哪个是哪个——因此将变量分配给 ThisWorkbook(代码所在的那个)也是一个好主意。最后,如果您像我上面显示的那样使用 ActiveSheet 并且您正在进行调试,那么任何 sheet 处于活动状态都将是 ActiveSheet —— 这可能会造成混淆。如果您有任何问题,请告诉我。

我遇到了这个问题。 VBA 'macro' 子程序单独在 Excel 中正常工作,但如果从 Access 调用,例程会跳过 Excel VBA 的重要部分和整个程序失败。 我在 Excel 中创建了一个新代码模块,在该模块中粘贴了完全相同的 vba 代码,但为 Sub 赋予了新名称。

然后我从 Access 调用例程,但使用新的 Excel VBA 子名称,它工作正常。我想旧模块以某种方式损坏了。