选择情况下的情况在公式驱动时不起作用



我尝试编写一个代码,该代码在单元格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提供出色的反馈和灵感以使其正常工作!

最新更新