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

时间:2019-04-23 15:23:01

标签: excel vba

当我选择单元格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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Range("A1")返回一个Range对象,该对象代表A1处的单元格-永远不会是Nothing,因为A1将始终作为单元格存在。 / p>

您可以And IsEmpty(Range("A1"))来查看它是否有值。

答案 2 :(得分: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

答案 3 :(得分:0)

这应该对您有用:

Private Sub Worksheet_SelectionChange(按目标值作为范围)

 如果Target.Address(False,False)=“ C1”并且IsEmpty(Range(“ A1”))= True然后
    MsgBox“请填写以前的字段以继续”
万一
 

结束子