【问题标题】:Auto refresh Excel Power Query when a particular cell changes (I am using VBA)特定单元格更改时自动刷新 Excel Power Query(我正在使用 VBA)
【发布时间】:2020-08-19 11:33:06
【问题描述】:

我正在将 Access 数据库导入 Excel 工作簿。我想根据 Excel 工作表中单元格的值过滤我正在自动导入的表。我已经能够通过 Power Query 代码做到这一点。

下一步是在每次单元格值更改时更新我正在导入的表格。每次使用 VBA 中的此代码更改整个工作表(关键单元格所在的单元格)中的 任何单元格 时,我都能够更新查询:

Private Sub Worksheet_Change(ByVal Target As Range)

    ThisWorkbook.RefreshAll

End Sub

我想编辑该 VBA 代码,以便 Power 查询仅在我用于过滤表格的特定单元格发生更改时更新,而不是在工作表中的任何单元格更改时更新。 p>

感谢任何提示!

【问题讨论】:

    标签: excel vba ms-access powerquery


    【解决方案1】:

    未测试。比如:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    if not intersect(cell_to_check, Target) is nothing then
        Application.EnableEvents = False
        ThisWorkbook.RefreshAll
    end if
    
    Application.EnableEvents = True
    
    End Sub
    

    【讨论】:

    • 谢谢你,罗恩。我知道我只需要更改代码的“cell_to_check”部分,对吧?我不确定如何在 VBA 中引用单元格。我已经检查了几种方法,但它们似乎都不起作用。我要引用的单元格名为“TeamNBA”,位于 NBA 表格的 A2 单元格(“NBA!A2”)上。对不起,我的 VBA 太天真了。
    • 很多方法:尝试Range("TeamNBA")[TeamNBA]ThisWorkbook.Worksheets("NBA").Cells(2,1)或...
    【解决方案2】:

    我最终使用了这段代码,它只刷新我想要的查询,而不是刷新工作簿中的所有查询:

    Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address = Me.Range("[Cell Reference]").Address _
    Then
    
        ActiveWorkbook.Connections("Query - [Name of the query]").Refresh
    
    End If
    
    End Sub
    

    在我的例子中,[Cell Reference] 是 B5,[Name of the query] 是 BS。 代码必须添加到单元格或范围(在我的例子中为 B5)所在的 Sheet 模块中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 2016-08-22
      • 1970-01-01
      相关资源
      最近更新 更多