如何让Excel VBA在If和Then之后停止

我使用下面的代码来检查一个单元格的范围,我希望它停止并突出显示第一个空的顶部。

Sub setcoinsfocus() If Sheet29.Range("B3").value = "" Then Sheet29.Range("B3").Activate If Sheet29.Range("B4").value = "" Then Sheet29.Range("B4").Activate If Sheet29.Range("B5").value = "" Then Sheet29.Range("B5").Activate If Sheet29.Range("B6").value = "" Then Sheet29.Range("B6").Activate If Sheet29.Range("B7").value = "" Then Sheet29.Range("B7").Activate If Sheet29.Range("B8").value = "" Then Sheet29.Range("B8").Activate If Sheet29.Range("B9").value = "" Then Sheet29.Range("B9").Activate If Sheet29.Range("B10").value = "" Then Sheet29.Range("B10").Activate If Sheet29.Range("B11").value = "" Then Sheet29.Range("B11").Activate If Sheet29.Range("B12").value = "" Then Sheet29.Range("B12").Activate If Sheet29.Range("B13").value = "" Then Sheet29.Range("B13").Activate If Sheet29.Range("B14").value = "" Then Sheet29.Range("B14").Activate 'Call MsgBox("You have entered too many coins. Maximum 12 coins per transaction. Please wait for assistance", vbCritical Or vbDefaultButton1, "Error") 'Call requestassist 'End If End Sub 

但是,excel实际上是突出最后一个空的。 我试着把代码放在另一个顺序中,但是它显然突出了底部的第一个空单元格。 我尝试在每行之后放入一些End If,但是如果发生错误'End if without block if'。 任何想法如何做到这一点? 非常感谢!

你可以使用循环:

 Sub setcoinsfocus() For i = 3 To 14 If Sheet29.Range("B" & i).Value = "" Then Sheet29.Range("B" & i).Activate Exit For End If Next End Sub 

或者ElseIf语句:

 Sub setcoinsfocus() If Sheet29.Range("B3").Value = "" Then Sheet29.Range("B3").Activate ElseIf Sheet29.Range("B4").Value = "" Then Sheet29.Range("B4").Activate ElseIf Sheet29.Range("B5").Value = "" Then Sheet29.Range("B5").Activate ElseIf Sheet29.Range("B6").Value = "" Then Sheet29.Range("B6").Activate ElseIf Sheet29.Range("B7").Value = "" Then Sheet29.Range("B7").Activate ElseIf Sheet29.Range("B8").Value = "" Then Sheet29.Range("B8").Activate ElseIf Sheet29.Range("B9").Value = "" Then Sheet29.Range("B9").Activate ElseIf Sheet29.Range("B10").Value = "" Then Sheet29.Range("B10").Activate ElseIf Sheet29.Range("B11").Value = "" Then Sheet29.Range("B11").Activate ElseIf Sheet29.Range("B12").Value = "" Then Sheet29.Range("B12").Activate ElseIf Sheet29.Range("B13").Value = "" Then Sheet29.Range("B13").Activate ElseIf Sheet29.Range("B14").Value = "" Then Sheet29.Range("B14").Activate End If 'Call MsgBox("You have entered too many coins. Maximum 12 coins per transaction. Please wait for assistance", vbCritical Or vbDefaultButton1, "Error") 'Call requestassist 'End If End Sub 

尝试使用Exit Sub语句您要停止Sub。