如何修复单元格公式结果更改时显示两次的 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
任选其一,但不要同时使用,因为您最终会得到两个消息框
我希望当公式结果在我的 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
任选其一,但不要同时使用,因为您最终会得到两个消息框