当我选择单元格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
答案 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“请填写以前的字段以继续”
万一
结束子