powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как поймать событие обновления QeryTable
9 сообщений из 9, страница 1 из 1
Как поймать событие обновления QeryTable
    #35958298
Таранага
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, есть необходимость поймать событие обновления запроса.

Ехельная справка предлагает сделать так:
Код: plaintext
1.
2.
3.
Private Sub QueryTable_AfterRefresh(Success As Boolean)
    MsgBox ("")
End Sub
По идее должен выскакивать меседжбох после обновления, но этого не происходит.

Вопрос: как получить желаемое?
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35959021
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справку в микрософт пишут идиоты.

Открывай модуль листа. В левом верхнем углу окна будет выпадающий список с именами объектов на листе. Выбираешь свой запросную таблицу, но обрати внимание что имя у нее будет QueryTable1 или то, что ты написал в качестве имени таблицы в диалоге свойств таблицы.
Потом в правом-верхнем углу окна модуля выбираешь нужное событие.
Макрос будет называться QueryTable1_AfterRefresh или МойКрутойЗапрос_AfterRefresh.
Макрос никогда не будет называться QueryTable_AfterRefresh.
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35959270
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помогает, зараза...

Делаю все по рецепту:
1. жмакаю на запросе правую кнопку
2. выбираю "свойства диапазона данных"
3. в поле "имя" пишу qwe
4. топчу ОК
5. захожу в модуль листа
6. прописываю процедуру:
Код: plaintext
1.
2.
Private Sub qwe_AfterRefresh()
    MsgBox ("")
End Sub
7. перехожу в ексель, жму обновить запрос - и хрен, что происходит... не залазит он в мою процедуру (((

ЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35961827
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaranagaЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...Вот тут собака и зарыта. Ты уверен что ты открываешь правильный модуль листа? Модуль того-самого листа на котором лежит запрос?
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35961913
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlTaranagaЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...Вот тут собака и зарыта. Ты уверен что ты открываешь правильный модуль листа? Модуль того-самого листа на котором лежит запрос?
Я честно говоря пробовал тоже ничего не получилось. Незнаю как это профессионально называется но кажется, что какой-то привязки не хватает чтобы эти объекты использовать (библиотеки), либо запрос мы не тот делаем.
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35962623
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaranagaНе помогает, зараза...

Делаю все по рецепту:
1. жмакаю на запросе правую кнопку
2. выбираю "свойства диапазона данных"
3. в поле "имя" пишу qwe
4. топчу ОК

4.1. В модуле листа :
Код: plaintext
Public WithEvents qtQueryTable As QueryTable
4.2. В модуле книги :
Код: plaintext
1.
2.
Private Sub Workbook_Open()
    Set Sheet1.qtQueryTable = Me.Worksheets("Sheet1").QueryTables( 1 )
End Sub
4.3. В модуле обратно снова листа :
Код: plaintext
1.
2.
Private Sub qtQueryTable_AfterRefresh(ByVal Success As Boolean)
    MsgBox Success
End Sub
4.4. Сохраняем- выходим - заходим снова (чтобы сработало Workbook_Open)
4.5. Все работает
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35963620
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ведь работает!!!
Реальное колдунство...
Спасибо!

А где поподробнее можно посмотреть про то, как события отлавливать когда их навиду в модуле листа нет?
Например, если нужно поймать событие наезда курсора мышки на Shapes?
Да еще и поймать номер или имя Шапеса на который наехали крысой?
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35963650
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Taranagaнужно поймать событие наезда курсора мышки на Shapes?

я, к сожалению, не наблюдаю у объекта Shape в обжект браузере вообще к.-л. событий :-(
в то время как у QueryTable их есть аж целых два...
м.б. можно как-то поизвращаться с API - но штатной моделью экселя - видимо никак.
...
Рейтинг: 0 / 0
Как поймать событие обновления QeryTable
    #35964335
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Taranaga,
Пример получения координат мышки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINTAPI) As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim iPoint As POINTAPI
Dim iCursorPos As Long
iCursorPos = GetCursorPos(iPoint)
MsgBox "Координаты мышки : " & vbNewLine & _
"X:" & iPoint.X & " Y:" & iPoint.Y, , ""
End Sub
Правда событие обрабатывается не весть какое. Хотя можно кое-как побороться со злом...
Событий листа/книги отслеживающих движение мышки, конечно, нет, но, если бросить на рабочий лист, например, Label (сделав его прозрачным и убрав рамку), то можно использовать соответствующее событие этого элемента управления.

Правда врядли этот вариант подойдёт для большого диапазона ячеек.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как поймать событие обновления QeryTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]