一旦达到条件就退出 for 语句
Exit for-statement once condition is reached
我正在尝试比较两个工作簿以找出它们之间不相似的任何行。我已经创建了下面的代码来执行此操作,但我希望有类似于 continue
的东西,我可以在 if 语句内部使用它来退出最里面的 for each
循环,一旦差异是成立。有什么明显的方法可以做到这一点?我想我可以使用 goto
语句,但我宁愿避免这种情况。
Sub test()
Dim wb_new As Workbook, wb_old As Workbook
Dim ws As Worksheet
Dim r As Range, c_old As Range, c_new As Range
Dim i As Long
Set wb_new = Application.Workbooks("Book1.xlsx")
Set wb_old = Application.Workbooks("Book2.xlsx")
For Each ws In wb_old.Worksheets
For i = 0 To 275
Set r = ws.Range("A1:Q1").Offset(i, 0)
For Each c_old In r
Set c_new = wb_new.Worksheets(ws.Name).Range("A1").Offset(i, c_old.Column - 1)
If c_new <> c_old Then
Debug.Print c_new.Address
End If
Next c_old
Next i
Next ws
End Sub
是的,有一个Exit For
声明。
If c_new <> c_old Then
Debug.Print c_new.Address
Exit For 'exits the inner loop
End If
您似乎已经在标题中回答了您自己的问题 - 只需使用 Exit For
。
这是一个参考:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/exit-statement
我正在尝试比较两个工作簿以找出它们之间不相似的任何行。我已经创建了下面的代码来执行此操作,但我希望有类似于 continue
的东西,我可以在 if 语句内部使用它来退出最里面的 for each
循环,一旦差异是成立。有什么明显的方法可以做到这一点?我想我可以使用 goto
语句,但我宁愿避免这种情况。
Sub test()
Dim wb_new As Workbook, wb_old As Workbook
Dim ws As Worksheet
Dim r As Range, c_old As Range, c_new As Range
Dim i As Long
Set wb_new = Application.Workbooks("Book1.xlsx")
Set wb_old = Application.Workbooks("Book2.xlsx")
For Each ws In wb_old.Worksheets
For i = 0 To 275
Set r = ws.Range("A1:Q1").Offset(i, 0)
For Each c_old In r
Set c_new = wb_new.Worksheets(ws.Name).Range("A1").Offset(i, c_old.Column - 1)
If c_new <> c_old Then
Debug.Print c_new.Address
End If
Next c_old
Next i
Next ws
End Sub
是的,有一个Exit For
声明。
If c_new <> c_old Then
Debug.Print c_new.Address
Exit For 'exits the inner loop
End If
您似乎已经在标题中回答了您自己的问题 - 只需使用 Exit For
。
这是一个参考: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/exit-statement