Vba 退出并继续循环上一层,以
在if语句中退出inside for之后,我想继续循环outside for,逻辑应该是正确的,但我不知道如何编码它。我这样做了,它给了我一个“下一个没有为”的错误。想法 这是我的密码: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
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更新了我的答案,解释了一些可以尝试实现相同逻辑的方法。