Страницы: Пред. 1 2
RSS
Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
 
Цитата
Jack Famous написал:
Отменить ЭТО никак не получается
видимо, и не получится. Т.к. это зашито в самом PQ. Можно лишь перед обновлением запросов запоминать активный лист и активировать его после обновления. При этом я бы делал это отдельной процедурой по OnTime.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий Щербаков, активация листа, даже в самом конце кода (в котором обновление запроса происходит в самом начале, а потом ещё происходит куча вычислений, создание временного листа с последующим удалением и прочее) не помогает. На мгновение xl действительно переходит на нужный лист, но потом (через 1-2 сек) всё равно перескакивает… С OnTime не знаком  :(
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
С OnTime не знаком
А с поиском по форуму?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Application.OnTime - это засекреченная процедура! (сведений о ней практически нет ни в справке Excel, ни в Интернете вообще, не говоря об этом форуме в частности)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Дмитрий Щербаков, Ігор Гончаренко, подкол понял  :D  вы правы )))
Заканчиваю оффтоп в чужой теме и подвожу итоги. Ссылки с примерами по методу Application.OnTime — [1] [2]

Я придумал более простое решение, которое сработало. Если запрос выгружается в таблицу на листе, то после обновления этого запроса xl непременно считает нужным показать вам обновлённую таблицу на листе. Если лист с этой таблицей скрыт, то появляются "артефакты выделения". То есть рамка выделения выделяет ячейки скрытого листа и чтобы это прекратить достаточно переключиться на другой лист. Так вот, я просто повесил на событие активации этого листа с выгруженным запросом возврат на нужный мне лист. Профит!  :D
Код
Private Sub Worksheet_Activate()
shTbl.Select 'кодовое (системное) имя листа, который должен увидеть пользователь после окончания работы макроса
End Sub
Изменено: Jack Famous - 14.05.2018 13:48:38
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
я просто повесил на событие активации этого листа с выгруженным запросом возврат на нужный мне лист
ну это для одной конкретно взятой ситуации. Глобально это не решение. Особенно, если действия внутри надстройки производятся.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий Щербаков, с удовольствием потестирую другие варианты
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
В общем, дальше макрос не пойдет, если снять руками галочку в свойствах Обновления запросов с "Фоновое обновление". Сделал это на всех запросах и все отлично заработало!
Улыбнись.
Страницы: Пред. 1 2
Наверх