我想在任何人刷新工作簿后运行宏,特别是使用Excel中“数据”选项卡下的“刷新”按钮或打开文件后(在打开文件后自动刷新SQL查询表)。
我已经阅读了很多文章,但这是最有用的文章:
How to call macro after Refresh or Refresh All button pressed?
我的常规模块宏(RefreshSet)在atl-F8上运行良好,但是AfterRefresh事件似乎并未触发。
我的工作表称为“ SQL&Tool”。
我的查询表称为“ Query1”。
我的课程模块称为“ qtClass”。
我要调用的宏是普通模块1中的“ RefreshSet”。
这是我到目前为止所做的:
在此工作簿下:
Dim qtevent As qtClass
Private Sub Workbook_Open()
Set qtevent = New qtClass
Set qtevent.HookedTable = ThisWorkbook.Worksheets("SQL&Tool").QueryTable(1)
End Sub
下层模块(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
在普通模块(模块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
对于我所缺少的任何建议或想法,将不胜感激!