在VBA / VBS中退出一个while循环

我有一个Excel VBA程序,循环通过数据表中的每一行数据。

我的目标是一旦boolean bFound设置为True ,退出while循环。

我认为我的条件“或bFound = True”可能是不正确的。

 bFound = False While Sheets("Data").Cells(iRow, 1) <> "" Or bFound = True If Sheets("Data").Cells(iRow, 11) = Sheets("Data2").Cells(iRow, 1) Then bFound = True End If iRow = iRow + 1 Wend 'exit loop after the boolean=true 

使用Do ... LoopExit Do

 bFound = False Do While Sheets("Data").Cells(iRow, 1) <> "" bFound = Sheets("Data").Cells(iRow, 11) = Sheets("Data2").Cells(iRow, 1) If bFound Then Exit Do iRow = iRow + 1 Loop 

翻转逻辑,我期望这将为你工作:

 bFound = False While Sheets("Data").Cells(iRow, 1) <> "" And bFound = False If Sheets("Data").Cells(iRow, 11) = Sheets("Data2").Cells(iRow, 1) Then bFound = True End If iRow = iRow + 1 Wend 

说明:

 While Sheets("Data").Cells(iRow, 1) <> "" And bFound = False 

只有在我们还有数据要处理的时候才允许循环进行,而我们仍然没有改变bFound ,它的初始值为False


另一种select是在VBS中使用While的易碎forms:

 Do While Sheets("Data").Cells(iRow, 1) <> "" If Sheets("Data").Cells(iRow, 11) = Sheets("Data2").Cells(iRow, 1) Then Exit Do iRow = iRow + 1 Loop