Вызвать макрос AfterRefresh выдача - PullRequest
0 голосов
/ 10 июля 2019

Мне бы хотелось, чтобы окно сообщений vbOK появилось после обновления моих запросов.

Я уже рассмотрел некоторые ответы здесь и попытался собрать их воедино, но я не смог понять, что я делаю неправильно.

Это в ThisWorkbook:

Dim qtevent As qtclass
-------------------------------------------------

Private Sub Workbook_Open()

Set qtevent = New qtclass
Set qtevent.HookedTable = 
ThisWorkbook.Worksheets("TagData").ListObjects("barTagData").QueryTable

End Sub
-------------------------------------------------

Sub refreshData()

Refresh_Note.Show vbModeless

Application.ScreenUpdating = True
Application.DisplayAlerts = False

With ThisWorkbook
.Connections("Query - PSTab").OLEDBConnection.BackgroundQuery = True
.Connections("Query - PETab").OLEDBConnection.BackgroundQuery = True
.Connections("Query - barTagData").OLEDBConnection.BackgroundQuery = True

.Connections("Query - PSTab").Refresh
.Connections("Query - PETab").Refresh
.Connections("Query - barTagData").Refresh

End With

DoEvents

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
-------------------------------------------------

Это модуль qtclass:

Option Explicit

Public WithEvents qt As 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 called successfully."
If Success = True Then
Call hideForm
MsgBox "If called Successfully"
End Sub
-------------------------------------------------

Sub hideForm()

Refresh_Note.Hide

End Sub
-------------------------------------------------

Любая помощь приветствуется!:) Спасибо.

Я пытаюсь вызвать подпрограмму hideForm после обновления запросов, что также приведет к появлению другого сообщения с сообщением «Queries Refreshed».Эта часть уже удалена, но эта подпрограмма не называется AfterRefresh.

1 Ответ

0 голосов
/ 10 июля 2019

Есть только один способ сделать это. Для всех ваших запросов Query - PSTab, Query - PETab, Query - barTagData необходимо снять флажок «Включить фоновое обновление» в окне свойств запроса.

После этого функция DoEvents должна дождаться обновления запросов. Таким образом, вы можете добавить MsgBox функцию после DoEvents

Disable Query refresh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...