Excel это не сложно

Основные форумы => Вопросы по Excel и VBA => Тема начата: Completum от 06.04.2019, 00:59:16



Название: "Горячие клавиши" через Application.OnKey
Отправлено: Completum от 06.04.2019, 00:59:16
Добрый вечер, уважаемые пользователи форума! Можете помочь? Пользуюсь 2 файлами Excel. Поскольку приходится быстро между ними переключаться, заметил, что очень удобная комбинация: "Ctrl+tab". В обоих файлах написал макрос на переключение. Всё работает, если открывать "Вид-макросы...". Также написал код на "Горячие клавиши" в обоих файлах в "разделах" "эта книга":

Код: (vb)
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^{TAB}", "Переключение_на_Телемаркетинг"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnKey "^{TAB}", ""
End Sub


Соответственно, во втором файле название другое. Работает 1 раз туда и обратно, после чего горячие клавиши не действуют, но если запускать макрос стандартным способом через меню, переключается. Подскажите, пожалуйста, что можно придумать?

Заранее благодарен, Ваш форум по VBA самый лучший, Вы меня многому научили!)


Название: Re:"Горячие клавиши" через Application.OnKey
Отправлено: Дмитрий Щербаков(The_Prist) от 06.04.2019, 08:25:32
Я так понял в обоих книгах используется одно и то же сочетание клавиш, но привязка идет к разным процедурам. А это значит, что при открытии первой книги будет назначено сочетание клавиш на код из этой книги, а при открытии второй книги - вызов по клавишам из первой заменится на вызов из второй и в дальнейшем будет срабатывать исключительно он. Т.е. в итоге надо либо разное сочетание использовать, либо смотреть как можно изменить код переключения так, чтобы корректно работал из обеих книг.
Ну или как вариант переназначать еще каждый раз процедуру для сочетания клавиш по событию Workbook_Activate.


Название: Re:"Горячие клавиши" через Application.OnKey
Отправлено: Completum от 06.04.2019, 10:10:08
Подскажите, пожалуйста, как это можно сделать "переназначать каждый раз процедуру для сочетания клавиш по событию Workbook_Activate"?


Название: Re:"Горячие клавиши" через Application.OnKey
Отправлено: Completum от 06.04.2019, 12:13:48
Есть идея: написать одинаковый макрос с одним и тем же названием в обоих книгах, и проверяем какой файл активен, а какой нет, и назначить нужную комбинацию клавиш. Т.е. не желательно на 2 разных макроса назначать одну и ту же комбинацию, несмотря на то, что они в разных файлах.


Название: Re:"Горячие клавиши" через Application.OnKey
Отправлено: Completum от 06.04.2019, 12:41:38
Всё работает! :D