我尝试编写一个在单元格A3值不同时显示不同消息框的代码。我发现当单元格A3仅包含文本时此代码有效,但是当我尝试将单元格A3设为公式驱动的单元格时,下面的此代码不起作用。谁能帮忙吗???
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A3"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "FALSE": MsgBox "This is False!"
Case Is = "TRUE": MsgBox "This is True!"
End Select
End If
End Sub
答案 0 :(得分:0)
我想您不想检查字符串True和False,而是布尔值,否则它应该完全像这样工作。您能给我们您在牢房中使用的公式吗?
如果单元格中确实有布尔值,则可以使用:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A3"), Range(Target.Address)) Is Nothing Then
If Target.Value Then
MsgBox "This is True!"
Else
MsgBox "This is False!"
End If
End If
End Sub
答案 1 :(得分:0)
最终有效的代码如下:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
MsgBox "False" = Range("A1") = "False"
MsgBox "True" = Range("A1") = "True"
Application.EnableEvents = True
End Sub
我发现我必须使其“计算”才能刷新工作表,否则excel无法识别布尔值更改。另外,我发现我必须添加“ Application.EnableEvents”代码,否则,VBA将运行到一个无限循环中,该循环可以完成工作,但只有在强制中断并停止代码运行时才会停止。
感谢Tim和Nirostar给予宝贵的反馈和启发,以使它正常工作!