在调试VBA时运行循环

时间:2014-05-09 15:38:38

标签: vba excel-vba loops debugging immediate-window

问题

我正在尝试调试一些代码,而在中间的某个地方,我在断点处停了下来。现在我想改变一些变量并多次运行一个循环。

我到底有多远?

我知道如何更改变量,但是当我尝试在即时窗口中运行循环时,我会陷入困境。这是一个例子:

Dim i As Integer 
Dim j As Integer 
For i = 0 To 6
       j=i    ' Do something
Next i 

我尝试了几种代码变体,但每次出现以下错误:

  

编译错误:下一步没有

其他相关信息

我试过搜索但是大部分都找到了有关循环问题的信息,而我很确定循环本身很好。 (特别是当我到达断点之前到达它)。

我看到有人出现这种情况的唯一地方,他将循环减少到一行,但是在我的情况下,每次这样做都是非常不切实际的。

我意识到我可以调用一个包含循环的函数,然后函数调用可能会起作用,但这再次感觉非常不切实际。所以我想这归结为以下问题。

问题

在Excel中调试VBA代码时运行循环的实用方法是什么?

2 个答案:

答案 0 :(得分:6)

实际上有一种方法可以在立即窗口中使用循环或其他多行语句 - 使用冒号:来分隔语句而不是新行。 描述完整解决方案here。 请注意,立即窗口中的 您也不必使用Dim语句声明变量。

总结一下,您的代码段看起来像这样:

For i = 0 To 6: j=i: debug.Print i+j: Next i 

答案 1 :(得分:5)

我想我理解你的问题。您想在立即窗口中运行多行代码块(即循环)。这会引发错误,因为立即窗口仅用于单行代码。

除了你提到的那些之外,我没有任何建议。我建议将测试循环放入一个单独的函数并从立即窗口调用它:

Sub Test()
Dim i As Integer 
Dim j As Integer 
For i = 0 To 6
       j=i    ' Do something
Next i 
End

另一种选择是设置几个断点。您也可以使用 F8 一次运行一行代码。

首选方法(即大多数人实际做的)可能使用IDE的全部功能,包括Immediate,Locals和Watch窗格。您可以通过直接窗格中的直接分配更改大多数变量在运行时的值(i=6将完全按照您的认为应该执行此操作)。 IDE还允许您设置断点,添加监视条件,使用 F8 逐行逐行执行代码,使用 Shift + F8 逐步执行函数或过程调用,使用鼠标/光标踩过(和返回)代码,除了少数例外,您甚至可以在运行时添加新变量