分享

[Excel VBA] 指定区域值更新才触发某事件该如何用VBA实现?

 旅行中的甘蓝 2020-04-11

当某个指定单元格的值变化的时候,才触发某事件,其他单元格的值变化,不触发该事件。
如:A1=IF(B1>10,1,2), B1=INT(RAND()*100)。只有当A1改变的时候才触发事件MsgBox "A1 Changed!"
该怎样实现?用Worksheet_Calculate还是Worksheet_Change?或者是其他事件?谢谢!

用Worksheet_Calculate事件的话,每计算一次都会出来对话框,而此时A1的值不一定改变了;
用Worksheet_Change事件的话,对按F9刷新的数据没有反应。

如何达到只有A1数据变化的时候才触发MsgBox事件?谢谢!

  1. Public k As Byte

复制代码

  1. Private Sub Workbook_Open()

  2. k = Sheets("sheet1").Range("a1").Value

  3. End Sub

复制代码

  1. Private Sub Worksheet_Calculate()

  2. If Range("a1").Value <> k Then

  3.     MsgBox "A1 Changed"

  4.     k = Range("a1").Value

  5. End If

  6. End Sub

复制代码

试试,3段在不同模块里头。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多