Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 09:08:46

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  "Горячие клавиши" через Application.OnKey
Страниц: [1]   Вниз
Печать
Автор Тема: "Горячие клавиши" через Application.OnKey  (Прочитано 2921 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Completum
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 56


Просмотр профиля E-mail
« : 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 самый лучший, Вы меня многому научили!)
« Последнее редактирование: 06.04.2019, 01:03:25 от Completum » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 06.04.2019, 08:25:32 »

Я так понял в обоих книгах используется одно и то же сочетание клавиш, но привязка идет к разным процедурам. А это значит, что при открытии первой книги будет назначено сочетание клавиш на код из этой книги, а при открытии второй книги - вызов по клавишам из первой заменится на вызов из второй и в дальнейшем будет срабатывать исключительно он. Т.е. в итоге надо либо разное сочетание использовать, либо смотреть как можно изменить код переключения так, чтобы корректно работал из обеих книг.
Ну или как вариант переназначать еще каждый раз процедуру для сочетания клавиш по событию Workbook_Activate.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Completum
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 56


Просмотр профиля E-mail
« Ответ #2 : 06.04.2019, 10:10:08 »

Подскажите, пожалуйста, как это можно сделать "переназначать каждый раз процедуру для сочетания клавиш по событию Workbook_Activate"?
« Последнее редактирование: 06.04.2019, 10:11:51 от Completum » Записан
Completum
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 56


Просмотр профиля E-mail
« Ответ #3 : 06.04.2019, 12:13:48 »

Есть идея: написать одинаковый макрос с одним и тем же названием в обоих книгах, и проверяем какой файл активен, а какой нет, и назначить нужную комбинацию клавиш. Т.е. не желательно на 2 разных макроса назначать одну и ту же комбинацию, несмотря на то, что они в разных файлах.
« Последнее редактирование: 06.04.2019, 12:43:28 от Completum » Записан
Completum
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 56


Просмотр профиля E-mail
« Ответ #4 : 06.04.2019, 12:41:38 »

Всё работает! :D
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru