Vba 退出并继续循环上一层,以

Vba 退出并继续循环上一层,以,vba,excel,Vba,Excel,在if语句中退出inside for之后,我想继续循环outside for,逻辑应该是正确的,但我不知道如何编码它。我这样做了,它给了我一个“下一个没有为”的错误。想法 这是我的密码: For InrCounter = 2 To InrNum For ExrCounter = 2 To Exrnum 'add missing column data from input sheet to existing sheet lastCofth

在if语句中退出inside for之后,我想继续循环outside for,逻辑应该是正确的,但我不知道如何编码它。我这样做了,它给了我一个“下一个没有为”的错误。想法

这是我的密码:

For InrCounter = 2 To InrNum
    For ExrCounter = 2 To Exrnum

            'add missing column data from input sheet to existing sheet
            lastCofthisR = sheet1Table.Cells(ExrCounter, Columns.Count).End(xlToLeft).Column

            'searching for address
            If sheet1Table.Cells(InrCounter, 1) = sheet2Table.Cells(ExrCounter, 1) And sheet1Table.Cells(InrCounter, 2) = sheet2Table.Cells(ExrCounter, 2) And sheet1Table.Cells(InrCounter, 3) = sheet2Table.Cells(ExrCounter, 3) Then
                If lastCofthisR < IncNum Then
                    For LastCofRowCounter = lastCofthisR + 1 To IncNum
                        Sheets("Sheet1").Cells(ExrCounter, LastCofRowCounter) = Sheets("Sheet2").Cells(InrCounter, LastCofRowCounter)
                    Next LastCofRowCounter

                    'found match loop next input row
                    Exit For
                    Next InrCounter
                Else
                    'do nothing
                End If
            Else
                Next ExrCounter
                'do nothing
            End If


            'did not find the input row, find the last row of existing and add it
            lrowEx = Sheets("Sheet1").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
            For counterCofLastR = 1 To IncNum
                Sheets("Sheet1").Cells(lrowEx + 1, counterCofLastR) = Sheets("Sheet2").UsedRange.Columns(1).Cells(InrCounter, counterCofLastR)
            Next counterCofLastR
     Next InrCounter
InrCounter=2到InrNum的

对于ExrCounter=2到Exrnum
'将输入工作表中缺少的列数据添加到现有工作表中
lastCofthisR=sheet1Table.Cells(ExrCounter,Columns.Count).End(xlToLeft).Column
'搜索地址
如果sheet1Table.Cells(InCounter,1)=sheet2Table.Cells(ExrCounter,1)和sheet1Table.Cells(InCounter,2)=sheet2Table.Cells(ExrCounter,2)和sheet1Table.Cells(InCounter,3)=sheet2Table.Cells(ExrCounter,3),则
如果lastCofthisR
您不能启动
For
循环,然后在
If
语句中嵌入
Next
语句

例如:

For i = 0 To 10
    If Range("A1").Value = "" Then
    Next
End If
将引发错误,因为Next在if语句中。正确的方法是:

For i = 0 To 10
    If Range("A1").Value = "" Then
    End If
Next
看起来你的下一个语句也太多了

编辑:

要跳出循环,可以使用
Exit For

例如:

For i = 0 To 10
    For x = 0 To 10
        Exit For
        Debug.Print x
    Next
    Debug.Print i
Next
只有
i
将被打印为0到10,因为内部循环将点击
Exit For

如果要跳过循环迭代,可以手动递增循环计数器。例如,以下代码将跳过
5
,因为
i
在循环开始时立即增加

For i = 0 To 10
    If i = 5 Then
        i = i + 1
    End If
    Debug.Print i
Next

那意味着你错过了下一站。因此,在顶部,您必须为语句添加一条新语句,但在底部,您只需结束1,在应该循环的位置添加另一条新语句。在VBA中,您必须求助于
GoTo
从内部循环跳到外部。我将另一条下一条语句放在代码的底部。在if语句中,我不知道如何跳出内部@Sorcei“在退出内部
for
后,继续循环外部
for
”-如果
在内部循环上退出
for
,如果
在内部循环上确实这样做了?@FabioPereira是的,但我收到一条错误消息,说“next Wither for”,如果我做了您发布的更改,逻辑将不同。if语句找到了一个匹配项,如果找到了,我想跳出内部循环,我不知道怎么做。@RipsterI更新了我的答案,解释了一些可以尝试实现相同逻辑的方法。