9

问题

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

我走了多远?

我知道如何更改变量,但在尝试在即时窗口中运行循环时不知何故卡住了。这是一个例子:

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

我尝试了代码的几种变体,但每次都收到以下错误:

编译错误:下一步没有for

其他相关信息

我尝试搜索,但主要是找到有关循环问题的信息,而我很确定循环本身很好。(特别是当我在到达断点之前到达它时)。

我看到有人解决这种情况的唯一地方,他将循环减少到单行,但是每次都这样做对我来说是非常不切实际的。

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

问题

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

4

2 回答 2

15

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

总而言之,您的代码段看起来像这样:

For i = 0 To 6: j=i: debug.Print i+j: Next i 
于 2017-05-10T17:30:47.077 回答
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 的全部功能,其中包括即时、本地和监视窗格。您可以在运行时通过在即时窗格中直接分配来更改大多数变量的值(i=6将完全按照您的想法执行)。IDE 还允许您设置断点、添加监视条件、使用 逐行遍历代码、使用F8遍历函数或过程调用Shift+F8、使用鼠标/光标遍历(和返回)代码,以及一些例外,您甚至可以在运行时添加新变量。

于 2014-05-09T18:15:37.027 回答