首页 > 解决方案 > 我有一个循环进入另一个循环,但它们没有按我预期的那样工作

问题描述

我正在尝试将一个名为 j 的循环放入另一个名为 i 的循环中。在其中一种方法中,我在 i 循环之前尝试了 j 循环结束,并且每次都复制相同的数字,因为 i 循环没有前进。

For i = 2 To lastRowK
    For j = 5 To 500
    If Worksheets(1).Cells(i, 5).Value = 7 Then
        Worksheets(2).Cells(j, 6).Value = Worksheets(1).Cells(i, 1).Value
    Next j
Next i

在另一个选项中,我尝试为 Next j 设置条件,但它给了我一个编译错误:Next without for.

For i = 2 To lastRowK
    For j = 5 To 500
    If Worksheets(1).Cells(i, 5).Value = 7 Then
        Worksheets(2).Cells(j, 6).Value = Worksheets(1).Cells(i, 1).Value
    If KRData.Cells(i, 5).Value = 7 Then _
    Next j
Next i

我尝试的第三个选项是将两个 next 都放在条件中,但它返回编译错误:预期列表分隔符或语句结尾。

For i = 2 To lastRowK
    For j = 5 To 500
    If Worksheets(1).Cells(i, 5).Value = 7 Then
        Worksheets(2).Cells(j, 6).Value = Worksheets(1).Cells(i, 1).Value
    If KRData.Cells(i, 5).Value = 7 Then _
    Next j AND Next i

此外,如果或否则结束不工作。

标签: excelvbaloops

解决方案


确保在循环开始之前设置您的To值。lastRowK如果它的值小于初始值,在您的情况 2 中,表达式将评估为 false 并终止循环。

For i = 0 To 3
Next i

将循环直到 i = 4。然后它将终止循环并在Next语句后面的下一行代码处继续执行。

For i = 2 To 1
Next i 

在此示例中,循环将立即终止并前进到下一条语句之前的第一行代码。我敢打赌,如果您在循环的初始化处放置一个断点,并检查工具菜单中的局部变量,您会看到它lasRowK的值Empty等于或小于等于 1。


推荐阅读