在VBA/VBS中退出while循环

big*_*yan 6 vbscript excel vba excel-vba

我有一个Excel VBA程序,它循环遍历数据表中的每一行数据.

我的目标是在布尔值bFound设置为时退出while循环True.

我认为我的条件"或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
Run Code Online (Sandbox Code Playgroud)

ome*_*pes 9

使用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
Run Code Online (Sandbox Code Playgroud)


Sel*_*ish 5

翻转逻辑,我希望这对你有用:

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
Run Code Online (Sandbox Code Playgroud)

说明:

While Sheets("Data").Cells(iRow, 1) <> "" And bFound = False
Run Code Online (Sandbox Code Playgroud)

将允许循环仅在我们仍有数据要处理的情况下继续进行并且我们仍然没有更改bFound,其初始值为False.


另一个选择是在VBS中使用Break的可破坏形式:

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
Run Code Online (Sandbox Code Playgroud)