如何修复单元格公式结果更改时显示两次的 msgbox?

How to fix msgbox showing up twice When Cell Formula Result Changes?

我希望当公式结果在我的 table 范围 ("K2:K5") 中发生变化时,消息框只显示一次。现在它显示两次。

在这个范围内,我有 excel-公式。公式:H12*10

这些公式指的是下拉列表(我从 excel 菜单数据选项卡上的 "data validation" 创建的列表)。

下拉列表位于 cell H12。 下拉列表中的值指的是范围(D15:D17)

我注意到当我删除下拉菜单并手动输入 H12 中的值时,msgbox 会出现一次。

感谢对此的任何帮助

Private Sub Worksheet_Calculate()
Dim Xrg As Range
Set Xrg = Range("K2:K5")
If Not Intersect(Xrg, Range("K2:K5")) Is Nothing Then
    MsgBox "Hi"
End If
End Sub

我也试过在代码中添加 Application.enableEvents 但没有成功。

Private Sub Worksheet_Calculate()
Dim Xrg As Range
Set Xrg = Range("K2:K5")
Application.EnableEvents = False
If Not Intersect(Xrg, Range("K2:K5")) Is Nothing Then
    MsgBox "Hi"
End If
Application.EnableEvents = True
End Sub

由于比较两个完全相同的范围并查看它们是否相交,因此您当前的代码对 Worksheet_Calculate 事件没有附加值。情况总是如此。您的代码将具有与以下相同的效果:

Private Sub Worksheet_Calculate()
    MsgBox "Hi"
End Sub

您的工作表中是否有更多函数可以触发此意外事件超出范围 K2:K5,您应该在引用单元格时查看 Worksheet_Change 事件和 return 消息框已更改值。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$H" Then MsgBox "Hi"
End Sub

任选其一,但不要同时使用,因为您最终会得到两个消息框