У Уильяма есть две книги, каждая из которых содержит макросы. Несмотря на то, что макросы разные, они вызываются с помощью одного и того же сочетания клавиш. Когда открыта только одна из книг, ярлык отлично работает. Когда обе книги открыты одновременно, Уильям никогда не знает, что именно будет запускаться. Он задается вопросом, есть ли способ для Excel обрабатывать сочетания клавиш независимо, так что, если обе книги открыты, сочетания клавиш будут работать гармонично.

Короткий ответ заключается в том, что это невозможно сделать, не внося некоторых изменений в сами макросы. Горячие клавиши являются «глобальными»

к экземпляру запущенного приложения (в данном случае Excel). Когда книги открываются, их ярлыки добавляются во внутреннюю таблицу, которая функционирует как индекс всех ярлыков и макроса, который они предназначены для запуска.

Этот индекс, кажется, отсортирован в алфавитном порядке по имени книги. Когда вы используете сочетание клавиш, Excel просматривает индекс и выбирает первый соответствующий ярлык в индексе. Кроме того, если у вас есть ярлык, который использует один из встроенных ярлыков, созданный макрос всегда будет запускаться перед встроенным. Если макросы имеют одинаковое имя, запускается первый открытый.

Поскольку таблица индексов, поддерживаемая Excel, создается экземпляром приложения, конфликт можно обойти, открыв каждую книгу в ее собственном экземпляре Excel. Не используйте диалоговое окно «Открыть» для загрузки второй книги; вместо этого дважды щелкните значок книги в Windows.

Если вы устали не забывать открывать книги таким образом, единственный другой вариант — начать вносить изменения в макросы. Простое изменение — это изменить сочетания клавиш так, чтобы они не совпадали. Вы можете сохранить те же сочетания клавиш, добавив некоторый код в начало каждого макроса. Попросите каждого макроса проверить имя активной книги. Если имя совпадает с ожидаемым именем для этого макроса, код может продолжить выполнение. Если он не совпадает, код может активировать другую книгу и напрямую запустить макрос в ней.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2872) применим к Microsoft Excel 97, 2000, 2002 и 2003.