如何从刷新

时间:2017-04-06 15:36:23

标签: excel vba excel-vba

我有一个我正在使用的excel报告,它插入了多个SQL表,因此我有一个命令按钮,它运行一个刷新所有表的宏。我正在尝试向该宏添加一些代码,这些代码将创建上次刷新表时的时间戳。

这是我到目前为止所拥有的:

Sub Button1_Click()
    ThisWorkbook.RefreshAll
    Range("I17").Formula = "=Now()"
End Sub

这就是我想要的,但问题是我的报告有很多其他单元格不断更新工作表,这反过来导致时间戳单元格(I17)不断刷新。

我该怎么做才能使NOW()函数“锁定”到那个时间并且不会刷新,除非我特意点击我的宏按钮?

1 个答案:

答案 0 :(得分:2)

每次重新计算时,公式都会重新评估其结果,按照定义。如果不是这样的话,Excel将毫无用处。

您想要的不是公式,而是

因此,不要使用Excel的NOW()函数,而是使用VBA的DateTime.Now属性来指定单元格的

ActiveSheet.Range("I17").Value = VBA.DateTime.Now

所有内容都被隐含地限定,它只有:

[I17] = Now

我鼓励你找到一个中间立场 - 隐式引用是一个非常常见的错误来源。这样的东西似乎是可以接受的,只要你在隐藏 Now属性的范围内没有VBA.DateTime变量,常量,过程或模块:

ActiveSheet.Range("I17") = Now

上述说明明确限定Range调用活动工作表,隐式使用Range对象的默认属性Value),并隐含地限定来自Now标准库模块的VBA.DateTime属性。