Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
24.09.2022, 19:45:00

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
32 837 Сообщений в 5 348 Тем от 6 475 Пользователей
Последний пользователь: lovelywill1
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  "Горячие клавиши" через Application.OnKey
Страниц: [1]   Вниз
Печать
Автор Тема: "Горячие клавиши" через Application.OnKey  (Прочитано 1811 раз)
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)
Администратор
Ветеран
*****

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

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



Просмотр профиля 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