2017-07-03 6 views
0

Ich habe den folgenden Code geschrieben Ich mag die Schleife von m zu brechen, will aber die Schleife von i fortzusetzen, wenn die (if) Anweisung true zurückwenn eine Anweisung erfüllt ist

For i = 7 To lastrow 
    For m = 33 To 37 

     If IsNumeric(mmk.Sheets("FG").Cells(i, m)) = True Then 
      quote(i, m) = mmk.Sheets("FG").Cells(i, m) 
     End If 

     If quote(i, m) <> Empty And quote(i, m) <> 0 And quote(i, m) > 0 Then 
      row(i, m) = i 
     End If 

     row1(i) = row(i, m) 

     If row1(i) <> Empty And row1(i) <> 0 And row1(i) > 0 Then 
      mmk.Sheets("FG").Rows(row1(i)).Select 
      Selection.Copy 
      wrk.Activate 
      wrk.Sheets("Nego").Activate 

      With ActiveSheet 
       last1 = .Cells(.Rows.Count, "A").End(xlUp).row 
      End With 

      wrk.Sheets("Nego").Cells(last1 + 1, 1).Select 
      ActiveSheet.Paste 
      Exit For 
      Next i 
     Else 
      Next m 
      Next i 
     End If 

ich möchte die äußere Schleife, aber die innere Schleife, wenn die letzte zu brechen, um fortzufahren if-Anweisung

wahr dreht, ist das Problem in den folgenden Ausdruck

exit for 
next i 

Antwort

2

Es ist eine Frage der Kontrolle an der richtigen Stelle, wenn Ihre Ausgangsbedingung wahr ist. Das Verlassen der inneren Schleife sollte innerhalb der inneren Schleife erfolgen.

Sub BreakInnerLoops() 

Dim i As Integer 
Dim j As Integer 
Dim k As Integer 

For i = 1 To 10 
    For j = 1 To 10 
     For k = 1 To 10 
      Debug.Print i & " " & j & " " & k 
      If k = 5 Then Exit For 'Exits k loop. 
     Next k 
     If j = 5 Then Exit For 'Exits j loop. 
    Next j 
    If i = 5 Then Exit For 'Exits i loop. 
Next i 

End Sub 

In Ihrem Fall:

For i = 7 To lastrow 
    For m = 33 To 37 
     'Some lines here. 
     If row1(i) <> Empty And row1(i) <> 0 And row1(i) > 0 Then 'Exit condition and do stuff. 
      mmk.Sheets("FG").Rows(row1(i)).Select 
      Selection.Copy 
      wrk.Activate 
      wrk.Sheets("Nego").Activate 
      With ActiveSheet 
       last1 = .Cells(.Rows.Count, "A").End(xlUp).row 
      End With 
      wrk.Sheets("Nego").Cells(last1 + 1, 1).Select 
      ActiveSheet.Paste 
      Exit For 
     End If 
    Next m 
Next i 

Auch möchten Sie vielleicht lesen how to avoid select

Verwandte Themen