在If / Then语句中给出多个参数时,MsgBox不会弹出

问题描述 投票:0回答:4

当我选择单元格C1时,如果A1为空,我想要弹出一个消息框。虽然没有实际发生(也没有错误信息)。我的语法错了还是我错了?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "C1" And Range("A1") Is Nothing Then
        MsgBox "Please fill out previous fields to continue"
    End If

End Sub

excel vba
4个回答
2
投票

尝试:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "$C$1" And Range("A1").Value = "" Then 'or IsEmpty(Range("A1"))
        MsgBox "Please fill out previous fields to continue"
    End If

End Sub

Target.Address将返回$C$1 - 所以那里需要。并且Is Nothing不用于确定细胞是否为空 - 这将是IsEmpty().Value = "" - Is Nothing更多地用于确定Object是否为Set


0
投票

Range("A1")返回一个Range对象,代表A1的细胞 - 这永远不会是Nothing,因为A1将永远作为一个细胞存在。

你可以And IsEmpty(Range("A1"))看看它是否有价值。


0
投票

试试这个

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$C$1" And Len(Range("A1")) = 0 Then
        MsgBox "Please fill out previous fields to continue"
    End If
End Sub

0
投票

这适合你:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address(False, False) = "C1" And IsEmpty(Range("A1")) = True Then
    MsgBox "Please fill out previous fields to continue"
End If

结束子

© www.soinside.com 2019 - 2024. All rights reserved.