7

Excel VBA 新手在这里。我只需要一个宏来刷新我正在查看的单张工作表上的查询。我已经有了刷新宏,但我总是必须指定要刷新的工作表名称。是否可以在我正在查看的任何工作表上运行宏?这是当前状态下的宏:

Sub Refresh_Query()
Sheets("Sheet1").Select
Range("B6").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
End Sub
4

3 回答 3

9

您要使用ActiveSheet.Name,例如:

Sub Refresh_Query()
    Sheets(ActiveSheet.Name).Select
    Range("B6").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
End Sub
于 2013-01-16T20:48:34.550 回答
2

这应该有效:

Sub Refresh_Query()
    ActiveSheet.QueryTables(1).Refresh BackgroundQuery:=False
End Sub
于 2013-01-16T20:48:22.133 回答
1

OP不明确:文本要求刷新活动工作表上的所有查询表,但示例代码仅刷新包含单元格的一个查询表B3

要仅刷新一个查询表,请使用

Sub RefreshOneQuery()
    Dim qt As QueryTable
    On Error Resume Next  ' in case there is no qt containing cell B6
    Set qt = Range("B6").QueryTable
    On Error GoTo 0
    If Not qt Is Nothing Then
        qt.Refresh BackgroundQuery:=False
    End If
End Sub

要刷新工作表上的所有查询表,请使用

Sub RefreshAllQueries()
    Dim qt As QueryTable
    For Each qt In ActiveSheet.QueryTables
        qt.Refresh BackgroundQuery:=False
    Next
End Sub
于 2013-01-17T05:38:26.203 回答