按下刷新或全部刷新按钮后调用宏吗?

时间:2018-10-07 17:45:16

标签: excel

我想在任何人刷新工作簿后运行宏,特别是使用Excel中“数据”选项卡下的“刷新”按钮或打开文件后(在打开文件后自动刷新SQL查询表)。

我已经阅读了很多文章,但这是最有用的文章:

How to call macro after Refresh or Refresh All button pressed?

我的常规模块宏(RefreshSet)在atl-F8上运行良好,但是AfterRefresh事件似乎并未触发。

我的工作表称为“ SQL&Tool”。

我的查询表称为“ Query1”。

我的课程模块称为“ qtClass”。

我要调用的宏是普通模块1中的“ RefreshSet”。

这是我到目前为止所做的:

  1. 在此工作簿下:

    Dim qtevent As qtClass
    Private Sub Workbook_Open()
    Set qtevent = New qtClass
    Set qtevent.HookedTable = ThisWorkbook.Worksheets("SQL&Tool").QueryTable(1)
    
    End Sub
    
  2. 下层模块(qtclass):

    Option Explicit
    Public WithEvents qt As Excel.QueryTable
    Public Property Set HookedTable(q As Excel.QueryTable)
    Set qt = q
    End Property
    Private Sub qt_AfterRefresh(ByVal Success As Boolean)
    MsgBox "QT_AfterRefresh sucessfully."
    If Success = True Then
        Call Module1.RefreshSet
        MsgBox "RefreshSet Macro called succesfully."
    End If
    
    End Sub
    
  3. 在普通模块(模块1)下:

    Sub RefreshSet()
    ' RefreshSet Macro
    
    Application.ScreenUpdating = False
    
    'SQL&Tool Tab
    
    'Set Cell q2:s2=0
    Sheets("SQL&Tool").Activate
    Range("q2:s2").Value = 0
    
    'Fill Down Formulas
        Dim NewSQLToolLastRow As Long
        NewSQLToolLastRow = Range("A" & Rows.Count).End(xlUp).Row
        Range("q2:s2").AutoFill Destination:=Range("q2:s" & NewSQLToolLastRow)
    
    Application.ScreenUpdating = True
    
    End Sub
    

对于我所缺少的任何建议或想法,将不胜感激!

0 个答案:

没有答案