当单元格更改时,VBA代码使用当前日期自动更新单元格,无法正常工作

时间:2016-12-27 17:53:56

标签: excel vba excel-vba

我有一张表格,我每天都会更改某些行的统计数据,我必须知道统计数据何时发生变化。为了让我的生活更轻松,我在互联网上找到了这个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

1 个答案:

答案 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 + ;

当前情况说明和建议的解决方案

enter image description here