我有一张表格,我每天都会更改某些行的统计数据,我必须知道统计数据何时发生变化。为了让我的生活更轻松,我在互联网上找到了这个VBA代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("R1:R2000")) Is Nothing Then Exit Sub
Target.Offset(0, 1) = Date
End Sub
代码非常有效。每当我更改R列上的de stats时,它都会更新S列上的日期。
问题是我在链接到外部源(Oracle数据库)的表中更改了此stat,如果我尝试刷新表,则会将表的整个内容更改为不同的日期。我现在要做的是,每当我必须刷新表时,我只是评论整个VBA代码。
我可以更改代码,以便在刷新表时不会更新吗?
编辑1:
Sub RefreshOracleTable()
Application.EnableEvents = False
If Intersect(Target, Range("R1:R200000")) Is Nothing Then Exit Sub
Target.Offset(0, 1) = Date
ThisWorkbook.Sheets("wsTables").ListObjects("OracleTable").QueryTable.Refresh BackgroundQuery:=Application.EnableEvents = True
End Sub
答案 0 :(得分:1)
您可以编写一个Sub,用于刷新表格。在刷新之前,您将禁用excel事件。像这样:
Sub RefreshOracleTable
Application.EnableEvents = False
'the refresh itself code something like
Thisworkbook.Sheets("wsTables").ListObjects("OracleTable").QueryTable.Refresh BackgroundQuery:=False
Application.EnableEvents = TRUE
End Sub
考虑使用键盘快捷键来手动输入当前日期。 CTRL
+ ;