2013-01-16 100 views
6

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

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

回答

7

你想用ActiveSheet.Name,如:

Sub Refresh_Query() 
    Sheets(ActiveSheet.Name).Select 
    Range("B6").Select 
    Selection.QueryTable.Refresh BackgroundQuery:=False 
End Sub 
+0

完美。非常感谢。 – user1985112

2

这应该工作:

Sub Refresh_Query() 
    ActiveSheet.QueryTables(1).Refresh BackgroundQuery:=False 
End Sub 
+0

-1 ActiveSheet没有的QueryTable属性。它具有QueryTables属性,因此ActiveSheet.QueryTables(1)可以工作。 –

+0

谢谢,@Doug。不知道(明显)。 – chuff

+1

对于此编辑答案+1。在最初的问题和接受答案中的“选择”也是多余的 – brettdj

0

的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 
相关问题