我是VBA新手,我正在尝试用以下代码触发BeforeRefresh和AfterRefresh事件:
在一个名为clsQuery的类模块下,我有:
Option Explicit
Public WithEvents MyQuery As QueryTable
Private Sub MyQuery_AfterRefresh(ByVal Success As Boolean)
If Success Then MsgBox "Query has been refreshed."
End Sub
Private Sub MyQuery_BeforeRefresh(Cancel As Boolean)
If MsgBox("Refresh query?", vbYesNo) = vbNo Then Cancel = True
End Sub然后在模块下面,我有:
Option Explicit
Dim colQueries As New Collection
Sub InitializeQueries()
Dim clsQ As clsQuery
Dim WS As Worksheet
Dim QT As QueryTable
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
Set clsQ = New clsQuery
Set clsQ.MyQuery = QT
colQueries.Add clsQ
Next QT
Next WS
MsgBox ("Works")
End Sub最后,在Microsoft Excel对象下,我有一个名为ThisWorkbook的选项卡:
Option Explicit
Dim colQueries As New Collection
Sub InitializeQueries()
Dim clsQ As clsQuery
Dim WS As Worksheet
Dim QT As QueryTable
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
Set clsQ = New clsQuery
Set clsQ.MyQuery = QT
colQueries.Add clsQ
Next QT
Next WS
MsgBox ("Works")
End Sub 因此,当我第一次打开excel文件时,消息框出现并显示“有效”。但是,当我尝试刷新数据时,刷新前和刷新后的消息框不会出现。任何帮助都将不胜感激!
发布于 2017-06-30 20:23:53
像这样的东西应该会对你有所帮助。没有太大的不同,但添加了一个集合。

https://stackoverflow.com/questions/44845922
复制相似问题