调试VBA时运行循环 问题 我试图调试一些代码,在中间的某个地方,我在断点处停了下来。现在我想更改一些变量,并多次运行某个循环 我走了多远?
我知道如何更改变量,但当我试图在即时窗口中运行循环时,不知何故我被卡住了。以下是一个例子:调试VBA时运行循环 问题 我试图调试一些代码,在中间的某个地方,我在断点处停了下来。现在我想更改一些变量,并多次运行某个循环 我走了多远?,vba,excel,loops,debugging,immediate-window,Vba,Excel,Loops,Debugging,Immediate Window,我知道如何更改变量,但当我试图在即时窗口中运行循环时,不知何故我被卡住了。以下是一个例子: Dim i As Integer Dim j As Integer For i = 0 To 6 j=i ' Do something Next i 我尝试了代码的几种变体,但每次都出现以下错误: 编译错误:下一步不带for 其他有关资料 我尝试过搜索,但大部分都找到了有关循环问题的信息,同时我非常确定循环本身是好的。(特别是当我到达断点之前) 我唯一看到有人添加这种情况的地方
Dim i As Integer
Dim j As Integer
For i = 0 To 6
j=i ' Do something
Next i
我尝试了代码的几种变体,但每次都出现以下错误:
编译错误:下一步不带for
其他有关资料
我尝试过搜索,但大部分都找到了有关循环问题的信息,同时我非常确定循环本身是好的。(特别是当我到达断点之前)
我唯一看到有人添加这种情况的地方是,他将循环减少到一行,但是每次这样做在我的情况下是非常不切实际的
我意识到我可以调用一个包含循环的函数,然后函数调用可能会工作,但这感觉还是很不切实际。所以我想这可以归结为以下问题
问题
在Excel中调试VBA代码时运行循环的实用方法是什么?我想我理解您的问题。您希望在即时窗口中运行多行代码块(即循环)。这会引发错误,因为即时窗口仅用于单行代码 除了你刚才提到的建议外,我没有其他建议。我建议将测试循环放入一个单独的函数中,并从即时窗口调用该函数:
Sub Test()
Dim i As Integer
Dim j As Integer
For i = 0 To 6
j=i ' Do something
Next i
End
另一个选项是设置多个断点。也可以使用F8一次运行一行代码
可能首选的方法(即大多数人实际做的)是使用IDE的全部功能,包括即时、局部和监视窗格。您可以在运行时通过在即时窗格中直接赋值来更改大多数变量的值(
i=6
将执行您认为应该执行的操作)。IDE还允许您设置断点、添加监视条件、使用F8逐行遍历代码、使用Shift+F8遍历函数或过程调用、使用鼠标/光标遍历(或返回)代码,除少数例外,您甚至可以在运行时添加新变量 实际上有一种方法可以在即时窗口中使用循环或其他多行语句—使用冒号:
来分隔语句,而不是新行。
描述了完整的解决方案。
注意,在即时窗口中,您也不必使用Dim语句声明变量
总而言之,您的代码片段如下所示:
For i = 0 To 6: j=i: debug.Print i+j: Next i
那么你想在即时窗格中输入循环代码,还是想按顺序重新运行循环?这不是我希望的答案,但你确实明白了我问题的重点。如果没有方便的方法,那当然也是答案。@David Zemens,我同意你的答案,但你确定它属于我自己答案的编辑吗?如果你认为这是最好的地方,我会留下它。我认为它可以作为对你答案的编辑——它扩展了你已经触及的东西(断点),并且可能对将来遇到类似问题的任何人都有用。因为这仅仅是一个解决方法,我不会让它成为公认的答案,但你会得到我的投票@DennisJaheruddin,这当然取决于你,但我认为你目前接受的答案是解决办法。问题是如何在调试期间运行循环。方法是在即时窗口中以多行语句的形式提交循环,这是通过使用“:”实现的,如我的回答中所述。