单步执行(F8)代码突然执行所有代码?

时间:2012-07-20 07:27:01

标签: excel vba excel-vba

我写的宏(在另一台机器上)突然在我的电脑上表现得很奇怪。我在Excel 2010环境中编写了代码,并尝试逐步完成代码。

每次我这样做,经过几行后,其余代码立即执行。如果我设置断点,它将停止。有时候,我可以在它再次进行auotexecutes之前逐步完成几行。

是什么给出的?我在网上找不到答案......因此我在Stackoverflow上发表了第一篇文章。

感谢任何提示!这让我的生活变得困难。

更新: 我现在已经回到原来的编程环境并且通过代码踩到没有问题。所以它必须是我的Excel设置中的东西!我无法弄清楚它可能是什么。

7 个答案:

答案 0 :(得分:4)

我发现此solution也引用了here。解决方案是对注册表进行更改(取自源代码):

注册表更改会影响RPC调试,您可以在Microsoft网站上阅读更多相关信息:Debugging COM Clients and Servers Using RPC Debugging

1.关闭Excel

2.制作注册表文件的备份,然后打开注册表 - Microsoft网站上有说明

3.转到适用的注册表项:

  • 对于64位窗口上的32位Office,请转到注册表项: HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VBA
  • 对于32位Office上的32位Office,请转到注册表项: KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VBA
  • 对于64位Windows上的64位Office,请转到注册表项: KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VBA

4.右键单击右侧窗口,然后单击“新建”

5.单击DWORD(在下面的屏幕截图中,DWORD用于在64位计算机上运行的32位Office)

6.将DWORD命名为DisableOrpcDebugging7

7.右键单击DWORD,然后单击“修改”

8.将值更改为1,然后单击“确定”。

9.完成的DWORD将出现在注册表中

10.关闭注册表,然后重新打开Excel,F8键现在可以正常工作,单步执行代码。

答案 1 :(得分:3)

由于您刚才提到F8按钮按预期工作,我的大部分想法都从表中清除 我无法解释这一点,但也许我可以提供一个临时的“解决方法”,这是我能做的最好的 您可以通过单击每一行然后应用CTRL + F8(运行到光标)来模拟F8。 光标将充当断点,并且比在每一行上放置/删除断点更不麻烦 这是一个更多的手工,但它的速度一样快(至少在普通桌面上)。 希望它能在调试时至少减少你的一些挫败感!

答案 2 :(得分:1)

最终更新: 事实证明,我运行后台的另一个应用程序,名为KeyRocket,旨在帮助您记住办公应用程序中的键盘快捷键,这是导致棘手行为的原因。我希望这有助于其他人!

最后感谢大家的建议!

答案 3 :(得分:1)

我有一个类似的问题,但是关闭excel下来,看到有一个EXCEL.EXE *32进程仍在运行,杀死它,然后重新打开并再次运行宏。无法按照预期进行重新定位和宏步。

答案 4 :(得分:1)

我遇到了同样的问题,但是在Word(不是Excel)2010中。

我尝试过上面其他贡献者提到的各种事情,例如:关闭可能利用F8密钥的其他程序,并关闭可能会干扰的其他MS Office 2010应用程序,然而,这个问题顽固地存在:从我的VBA代码的某一点开始,逐步执行代码(F8键)被忽略,整个过程立即执行。

然后我用我的代码进行了一些实验。因此我发现:在我的情况下,当我调用外部过程时,出现了不需要的行为:

Application.Run MacroName:="OneProcedureOfMine"

为了避免这个问题,我重写了代码:

Call OneProcedureOfMine

无论如何都是更优雅的方式。它解决了这个问题。 通过这种方式调用从属程序,F8整齐地执行主程序,并从内部调用每个程序。

答案 5 :(得分:0)

我通过做两件事成功解决了这些问题: 1.如果您加载了多个键盘驱动程序,请删除您未使用的键盘驱动程序 2.如果你的键盘有一个" F Lock"键(位于我的键盘上的F12右侧),按下它并再试一次。

答案 6 :(得分:0)

我知道这是一个非常旧的线程,但是我才发现它。我检查了任务管理器,发现我正在运行一个“卡住”的Access进程。我摆脱了这一点,现在一切正常。