Замість того щоб призначати кожній кнопці свій макрос, іноді зручніше створити один макрос, що керує всіма кнопками.
Зазвичай користувачі вважають за краще виконувати макроси, або натиснувши клавіші, або клацнувши просту кнопку, а не шукати потрібний макрос в меню і діалогових вікнах. Найвідоміший спосіб дістатися до кнопки - це панель інструментів Форми (Forms), яку можна відкрити, вибравши команду Вид → Панелі інструментів → Форми (View → Toolbars → Forms). Ці кнопки, на нашу думку, є кращий вибір серед варіантів запуску макросів, особливо записаних макросів, так як такі макроси часто вимагають, щоб в момент виконання активним був певний робочий лист.
Простіше кажучи, записані макроси завжди використовують ActiveSheet, якщо ви записували макрос, не перемикаючись між листами. Це означає, що якщо користувач знаходиться не на необхідному аркуші (іншими словами, не на тому ж аркуші, на якому ви записували макрос), то записаний макрос найчастіше видає помилку і зупиняється або змінює дані на неправильному аркуші. Завдяки кнопці на робочому аркуші, можна змусити користувача перейти до потрібної кнопки на потрібному робочому аркуші, щоб налаштувати відповідні умови для виконання макросу перед його запуском.
Чому кнопка з панелі інструментів Форми (Forms), а не з панелі інструментів Елементи управління (Control Toolbox)? Кнопки практично завжди застосовуються для розпізнавання клацання миші і потім запуску певного макросу. Командну кнопку з панелі інструментів Елементи управління (Control Toolbox) необхідно використовувати, тільки якщо потрібно розпізнати інші події, наприклад, подвійне клацання, клацання правою кнопкою миші і т. Д. Елементи управління на цій панелі відомі як елементи керування ActiveX, і використання їх тільки для запуску макросу додає Excel абсолютно непотрібне навантаження, особливо якщо кнопок багато. Це схоже на забивання цвяхів кувалдою.
Якщо в робочій книзі багато кнопок і кожна кнопка використовується для запуску певного макросу, можна приєднати макроси до кнопок, правою кнопкою миші клацнувши кордон кнопки і в контекстному меню вибравши команду Призначити макрос (Assign Macro). Потім в діалоговому вікні Призначити макрос об'єкту (Assign Macro) виберіть відповідний макрос (рис. 7.2).
Мал. 7.2. Виділена кнопка showcal і діалогове вікно призначення макросу об'єкту з обраним макросом
Кожна кнопка зазвичай запускає свій макрос, тому часто доводиться прокручувати цілий список макросів, щоб знайти потрібний. Є простий спосіб призначити всі кнопки одному макросу, але при цьому зробити так, щоб кожна кнопка запускала свій макрос.
// Лістинг 7.6 Sub WhichButton () Run Application.Caller End Sub
Тепер необхідно присвоїти кожній кнопці те ж ім'я, що і у макросу, який вона повинна запускати. Щоб дати ім'я кнопці з панелі інструментів Форми (Forms), клацніть її та замініть ім'я в поле імені назвою макросу, який буде запускати ця кнопка. Зробіть це для всіх кнопок. Тепер, якщо ви назвете кнопку Macro1 і призначите її макросу WhichButton, клацання на цій кнопці запустить макрос Macro1.