我尝试编写一个代码,该代码在单元格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
我想您不想检查字符串的真实和错误,但对于布尔值,否则应该像这样工作。您可以给我们在单元格中使用的公式吗?
如果您在单元格中确实具有布尔值:
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
最终工作的代码如下:
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提供出色的反馈和灵感以使其正常工作!