退出并保持循环上层

我想在if语句退出内部循环外部,逻辑应该是正确的,但我不知道如何编写它。 我做了这个,它给了我一个“下一个没有”的错误。 想法?

这是我的代码:

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 

您不能启动一个For循环,然后将Next语句embedded到If语句中。

例:

 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