VBA调试,如何一次执行多个循环

时间:2019-01-23 15:51:47

标签: excel vba

我有一个循环遍历1万行。我在一条记录中间遇到麻烦,我想看看5k行标记附近的代码在做什么。 在下一个f5上执行此操作不切实际。

如何运行到指定的循环号或行号?

3 个答案:

答案 0 :(得分:2)

在循环中放入If i = 5000 Then Stop之类的内容。然后,代码将在调试模式下以i = 5000高亮显示在Stop处。然后,您可以使用F9逐步进行操作。

用于循环

For i = 1 to 10000 '<-- this is YOUR loop!
    If i = 5000 Then Stop

    'your other code here
Next i

执行循环

如果它是放置在计数器Do中的i循环

Dim i As Long
Do While Criteria = True
    i = i + 1
    If i = 5000 Then Stop

    'your other code here
Loop

答案 1 :(得分:2)

学习使用Debug.Assert,这会在代码评估为False时自动暂停您的代码。例如:

Sub Demo_Debug_Assert()
    Dim i As Long

    For i = 1 To 100
        Debug.Assert i < 50
    Next i
End Sub

每个i大于49的值都会中断。显然,可以根据您的条件更改此条件,因此:

Debug.Assert i <> 5000

如果您希望它仅在5000

上中断
Debug.Assert i < 5000

使代码在4999之后的每个值处终止

为此,您不必担心在使用代码之前就删除这些行,而可以创建一个DebugMode全局常量(此处称为Boolean),这样就不会触发该< / p>

Const DebugMode = True
Sub Demo_Debug_Assert()
    Dim i As Long

    For i = 1 To 100
        If DebugMode Then Debug.Assert i < 50
    Next i
End Sub

将全局常量更改为Const DebugMode = False会将代码运行到最后而不会暂停

答案 2 :(得分:1)

在循环中添加一个增量变量,然后添加如下条件:

i = i + 1
if i = 5000 then
   i = 5000                        <---- Do F9 here
end if

在“ i = 5000”行上执行F9,以添加用于调试的断点。

这将在5000次迭代后停止运行