在条件vba中结束一个while循环

我有一个while循环,我不能结束,当我想要结束。

在这个代码中:

row = 3 While Cells(row, COL_B) <> "" If Not Cells(WBSrow, COL_B).Value = Mid(Cells(row, COL_E), 1, 8) Then valueup = Cells(row, COL_E) With Range("C1:C400") Set c = .Find(valueup, LookIn:=xlValues) If c Is Nothing Then Msgbox "Error in Column E" End If End With End If row = row + 1 Wend 

我想在该If语句中的Msgbox之后添加Wend以在条件满足时结束循环。 当用户input很多行时,可能会出现多个相同types的错误,msgbox会popupX次。

我遇到的问题是如果我把它放在那里,我会得到“Wend without While”的错误。 我以前曾经为For Each循环做过这个,有什么想法为什么这里不适合我?

先谢谢了/吉姆

你能不能使用Do While …

例如,这将尽早退出循环…

 Sub Test() Dim i As Integer Do While i < 100 i = i + 1 If i = 10 Then Exit Do Loop End Sub 

在msgbox后面添加转到语句。 所以当条件满足时,它会执行goto语句,然后走出循环。 我认为这会帮助你。

 row = 3 While Cells(row, COL_B) <> "" If Not Cells(WBSrow, COL_B).Value = Mid(Cells(row, COL_E), 1, 8) Then valueup = Cells(row, COL_E) With Range("C1:C400") Set c = .Find(valueup, LookIn:=xlValues) If c Is Nothing Then Msgbox "Error in Column E" '''''''''''''''''''''''''' Goto Alldone '''''''''''''''''''''''''' End If End With End If row = row + 1 Wend '''''''''''''''''''''''''''''''''''''''''''''' AllDone: '''''''''''''''''''''''''''''''''''''''''''''' 

While..Wend构造不具有退出function,但Do While..Loop子句可以:

 row = 3 'Add a Do here Do While Cells(row, COL_B) <> "" If Not Cells(WBSrow, COL_B).Value = Mid(Cells(row, COL_E), 1, 8) Then valueup = Cells(row, COL_E) With Range("C1:C400") Set c = .Find(valueup, LookIn:=xlValues) If c Is Nothing Then Msgbox "Error in Column E" 'Add an Exit Do here Exit Do End If End With End If row = row + 1 'Change Wend to Loop here Loop