【发布时间】:2021-03-31 23:02:59
【问题描述】:
Worksheet_Change 在更改单元格值时触发(这是我想要的),但它也会在您输入单元格时触发,好像要编辑它但实际上并没有更改单元格的值(这就是我不想发生)。
假设我想为值已更改的单元格添加阴影。所以我编写了这个代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 36
End Sub
现在测试我的工作:更改单元格 A1,单元格将突出显示。这是期望的行为。到目前为止,一切都很好。然后,双击 B1 但不要更改那里的值,然后单击 C1。您会注意到 B1 被突出显示!这不是理想的行为。
我是否必须通过此处讨论的捕获旧值的方法,然后在突出显示单元格之前将旧值与新值进行比较?我当然希望我缺少一些东西。
【问题讨论】:
-
是的,你这样做:)。
Change事件旨在捕获对单元格的编辑 - 而不是测量来自该编辑的数据 - 因此将编辑结果与先前状态进行比较的测试超出了Change事件的直接范围 -
@user - 你认为这看起来很奇怪是正确的。我想这个问题只能通过更具体(和复杂)的方法来回答,例如对类似问题的其他回答是:“相对于何时改变”?如果这是您的目标,Gimp 的建议很好 - 跟踪特定会话中的所有更改。但是,如果您想跟踪(例如)给定会话中的多个更改,则需要使用另一种方法。 Worksheet_change 只是将事件作为“钩子”提供给您 - 您必须在此基础上构建(不幸的是有时很多)以满足您的特定需求。
-
您考虑过使用
Track Changes功能吗?