【问题标题】:Count Cell Changes计算单元格变化
【发布时间】:2021-10-07 08:11:23
【问题描述】:

当前脚本跟踪单元格 A1 中的单元格更改并计算单元格 B1 中的这些更改。但是,它仅在您主动输入数字或文本然后在单元格 A1 中按 Enter 时才有效。当从另一个单元格引用 A1 单元格以计算更改时,我需要该公式起作用。

Option Explicit
Private prevVal As String
Private Sub ToggleButton1_Click()

End Sub

Private Sub Worksheet_Calculate()
  If Worksheets("Sheet1").ToggleButton1.Value = True Then
  Application.EnableEvents = False
    If Me.Range("A1").Value <> prevVal Then
    Me.Range("B1").Value = Me.Range("B1").Value + 1
    prevVal = Me.Range("A1").Value
    End If
 End If
 Application.EnableEvents = True
End Sub

【问题讨论】:

  • 请尝试更好地解释“当 A1 单元格被另一个单元格引用时”是什么意思?我们是否应该理解“A1” cel 值是公式的结果?
  • 正确。例如,A1 可以引用 A6 = "Apple",然后当我将 A6 更改为 "Orange" 时,它不会计算该更改,因为它是一个引用的单元格。

标签: arrays excel vba logging rtd


【解决方案1】:

如果“A1”单元格值是公式的结果,则应使用Calculate 事件。请在工作表代码模块中复制此代码事件:

Option Explicit

Private prevVal As String
Private Sub Worksheet_Calculate()
   Application.EnableEvents = False
   If Me.Range("A1").value <> prevVal Then
        Me.Range("B1").value = Me.Range("B1").value + 1
        prevVal = Me.Range("A1").value
    End If
   Application.EnableEvents = True
End Sub

【讨论】:

  • 仅供参考...我必须添加 Application.EnableEvents = FalseApplication.EnableEvents = True 才能使其正常工作,因为它在我运行的其他脚本中表现得很有趣。
  • 你能帮我在这个脚本中添加一个 ActiveX 切换按钮吗?我正在努力解决它,但它会干扰Private prevVal As String
  • @mjac 我不明白你的意思......你想让我在每次“A1”中的值发生变化时添加一个切换按钮吗?如果不是,“向此脚本添加 ActiveX 切换按钮”是什么意思?
  • 我编辑了原件?用切换按钮澄清我得到的东西。拥有它是一件好事,但代码在没有它的情况下运行良好。只是试图通过切换按钮控制脚本的激活,以便我可以打开/关闭。
  • @mjac 如果您打算根据切换按钮的值调节事件以增加,您应该以不同的方式询问...抱歉,我不明白您的意思,我没有空查看您更新的问题。但是自己解决是记住和学习的最好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多