我对 VBA 代码完全是新手,但从我的谷歌搜索来看,我需要 VBA 来实现我所寻找的功能。我有一张工作表,其中有一个“注释”单元格,还有一个单独的单元格,其中包含此注释单元格上次更新的日期。我需要“更新日期”单元格(位于 D 列)自动更新注释单元格(H 列)更新的日期。我的 google-jitsu 只为我找到了今天的功能,但它不起作用,因为客户 X 的更新日期可能是今天,但客户 Y 可能是上周。
即,每当 H2 更新时 D2 也更新,每当 h3 更新时 d3 也更新,等等)
提前感谢大家!
答案1
不幸的是,Excel 没有通过其任何工作表函数(例如CELL()
)提供直接方法来确定单元格值的最后更新时间。因此,一种可能性是考虑使用 VBA。
VBA 确实提供了一种机制来处理自动捕获一个单元格的修改日期的问题,但这涉及使用“事件”。
具体来说,Worksheet_Change
只要工作表发生更改,就会触发该事件。只要触发此类事件,就可以运行用户编写的代码,并且可以设计此代码来 (1) 识别 H 列中的任何“注释”单元格是否已更改,以及 (2) 将日期插入 D 列中相应的“更新日期”单元格中。
我不建议为您编写该代码,因为 SuperUser 不是免费的代码编写服务,但会为您指出以下链接:
- 微软自己的“文档”工作表事件尤其是工作表_更改事件。该文档非常简洁和紧凑。
- 这篇长文来自特朗普精英是学习 Excel 中事件的一个很好的起点,涵盖了工作表事件以及其他类型的事件。这篇文章涵盖了相同的内容,但方式略有不同自动化Excel- 特别注意其关于在活动中使用代码的危险以及如何通过使用代码暂时禁用进一步的事件触发来避免这些问题,然后在您自己的事件代码完成其工作后重新启用事件。
一旦您掌握了事件编程(并且作为一个自认的 VBA 新手,这需要投入一些时间和学习),您就可以编写事件代码来自动执行问题中指定的任务。
一旦您到达这一点,并且假设您正在使用 Excel 和 VBA,您将能够Date
在代码中使用 VBA 的函数来捕获当前系统日期,当您检测到列中的单元格H
已更改时,将此日期写入列中相应的单元格D
。请注意,这与在公式中使用工作表函数(例如) TODAY()
或NOW()
此类单元格不同。运行代码来更新单元格的值实际上类似于在单元格中键入值 - 该值保持不变,直到执行影响单元格的新代码或用户采取某种操作来更改单元格的值。相反,每次重新计算工作表时,将公式应用于单元格可能会更改该单元格的值。