2013-07-31 36 views
0

我想保持外部循环后退出内部为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 
+1

好吧,这意味着你错过了下一个陈述。所以在顶部你必须为陈述,但在底部你只关闭1,在应该循环的地方添加另一个陈述。 – Sorceri

+1

在VBA中,您不得不求助于'GoTo'跳出内部循环到外部循环。 –

+0

我把另一个声明放在代码的底部。我不知道如何在if语句中跳出内在的一面。 @Sorcei – user2600411

回答

2

不能启动For循环,然后有嵌入If语句Next声明。

例子:

For i = 0 To 10 
    If Range("A1").Value = "" Then 
    Next 
End If 

将抛出一个错误,因为接下来是if语句内。要做到这一点的正确方法应该是:

For i = 0 To 10 
    If Range("A1").Value = "" Then 
    End If 
Next 

它也像你有一个太多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 
+0

如果我发布了更改,逻辑将会有所不同。 if语句发现匹配,如果发现我想跳出内循环,我不知道该怎么做。@ Ripster – user2600411

+0

我更新了我的答案,解释了一些可以尝试实现相同逻辑的方法。 – Ripster