如何使Excel VBA在执行If和Then后停止

3

我正在使用以下代码来检查一系列单元格,我希望它可以停止并突出显示从顶部开始的第一个空单元格。

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”。 有什么想法吗? 非常感谢!

2个回答

4
您可以使用循环来实现它:
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

1

在想要停止 Sub 的地方尝试使用 Exit Sub 语句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接