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

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

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

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

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

ЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...
...
Рейтинг: 0 / 0
29.04.2009, 18:41:13
    #35961827
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поймать событие обновления QeryTable
TaranagaЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...Вот тут собака и зарыта. Ты уверен что ты открываешь правильный модуль листа? Модуль того-самого листа на котором лежит запрос?
...
Рейтинг: 0 / 0
29.04.2009, 19:13:30
    #35961913
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поймать событие обновления QeryTable
White OwlTaranagaЗЫ А слева сверху модуля листа в выпадающем списке мне предлагается выбрать только из "(General)" и "Worksheet"...Вот тут собака и зарыта. Ты уверен что ты открываешь правильный модуль листа? Модуль того-самого листа на котором лежит запрос?
Я честно говоря пробовал тоже ничего не получилось. Незнаю как это профессионально называется но кажется, что какой-то привязки не хватает чтобы эти объекты использовать (библиотеки), либо запрос мы не тот делаем.
...
Рейтинг: 0 / 0
30.04.2009, 09:38:02
    #35962623
qwrqwr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поймать событие обновления QeryTable
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
30.04.2009, 15:06:37
    #35963620
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поймать событие обновления QeryTable
И ведь работает!!!
Реальное колдунство...
Спасибо!

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

я, к сожалению, не наблюдаю у объекта Shape в обжект браузере вообще к.-л. событий :-(
в то время как у QueryTable их есть аж целых два...
м.б. можно как-то поизвращаться с API - но штатной моделью экселя - видимо никак.
...
Рейтинг: 0 / 0
01.05.2009, 02:56:07
    #35964335
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поймать событие обновления QeryTable
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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как поймать событие обновления QeryTable / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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