代码之家  ›  专栏  ›  技术社区  ›  Chris

Excel 2016 VBA工作簿。打开将丢失调试步骤模式。。再次访问

  •  0
  • Chris  · 技术社区  · 8 年前

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

    工作手册。打开文件名:=“C:\file2”

    文件打开正常,但返回时,子文件的其余部分将执行到底(我在模式中失去了步骤)。

    我在64位机器上运行Windows 10,并且是32位版本的Office professional Plus 2016

    *以下链接中描述了相同的问题: Excel 2013 VBA Workbooks.Open Loses Debug Step Mode? 但理想的解决方案是在工作簿之后添加断点。打开线路。这在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论坛。所以我们来了……)

    欢迎提出任何解决方案。

    2 回复  |  直到 8 年前
        1
  •  2
  •   user12725578    6 年前

    我有这个问题。VBA“宏”子模块单独在Excel中正常工作,但如果从Access调用,例程将跳过Excel VBA的重要部分,整个过程将失败。 我在Excel中创建了一个新的代码模块,在该模块中粘贴了完全相同的vba代码,但给了Sub一个新名称。

    然后我从Access调用了该例程,但使用了新的Excel VBA子名称,它运行得很好。不知怎么的,旧模块被破坏了。

        2
  •  0
  •   Tony M    8 年前

    我遇到了您描述的问题,以下方法对我有效:

    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...
    

    这允许您在打开文件的行之前和之后放置断点,这样您可以再次单步执行代码。执行文件输入/输出行会导致Excel宏只运行代码,而不是跟踪这些行。此外,分配变量是一种很好的做法,因为它允许您解决代码中的问题。但请注意,打开多个工作簿后,您需要跟踪哪个是哪个,所以最好将变量分配给 ThisWorkbook (代码所在的代码)。最后,如果您使用 ActiveSheet 正如我在上面所展示的,您正处于调试过程中,那么无论哪个工作表处于活动状态,都将是 活动工作表 --这可能会让人困惑。如果你有问题,请告诉我。