Як записати макрос в Excel

  • Поділитися Цим
Michael Brown

Покрокове керівництво для початківців по запису, перегляду, запуску та збереженню макросу. Ви також дізнаєтеся деякі внутрішні механізми роботи макросів в Excel.

Макроси - це відмінний спосіб автоматизувати повторювані завдання в Excel. Якщо ви знову і знову робите одні й ті ж дії, запишіть свої рухи у вигляді макросу і призначте йому комбінацію клавіш. І тепер всі записані дії будуть виконуватися автоматично, одним натисканням клавіші!

    Як записати макрос в Excel

    Як і інші інструменти VBA, макроси Excel розміщуються на Розробник яка за замовчуванням прихована. Отже, перше, що потрібно зробити, це додати вкладку "Розробник" до стрічки Excel.

    Щоб записати макрос в Excel, виконайте такі дії:

    1. Про це йдеться на Розробник у вкладці Код у групі, натисніть на кнопку Запис макросу кнопку.

      Крім того, натисніть кнопку Запис макросу в лівій частині сторінки Статус в барі:

      Якщо Ви віддаєте перевагу роботі з клавіатурою, а не з мишею, натисніть наступну послідовність клавіш Alt , L , R (по черзі, а не всі клавіші одночасно).

    2. В рамках проекту Запис макросу У діалоговому вікні, що з'явилося, налаштуйте основні параметри вашого макросу:
      • В рамках проекту Макрос ім'я введіть назву для вашого макросу. Намагайтеся зробити її змістовною та описовою, щоб в подальшому ви могли швидко знайти макрос у списку.

        У назвах макросів можна використовувати літери, цифри та символи підкреслення; перший символ повинен бути літерою. Пробіли не допускаються, тому слід або робити назву однослівною, починаючи кожну частину з великої літери (напр. MyFirstMacro ) або окремими словами з підкресленням (наприклад Мій_перший_макрос ).

      • В рамках проекту Клавіша швидкого доступу введіть будь-яку літеру для призначення макросу комбінації клавіш (необов'язково).

        Можна використовувати як великі, так і малі літери, але краще використовувати комбінації клавіш у верхньому регістрі (Ctrl + Shift + літера), оскільки комбінації клавіш макросів замінюють будь-які стандартні комбінації клавіш Excel, поки відкрита книга, що містить макрос. Наприклад, якщо призначити макросу комбінацію клавіш Ctrl + S, ви втратите можливість зберігати файли Excel за допомогою комбінації клавіш. Якщо призначити комбінацію клавіш Ctrl + Shift + S, то збережеться комбінація клавішстандартний ярлик збереження.

      • Від Зберігати макрос в виберіть у випадаючому списку, де ви хочете зберегти ваш макрос:
        • Особиста робоча книга макросів - зберігає макрос у спеціальній робочій книзі з назвою Personal.xlsb Усі макроси, що зберігаються в цій книзі, доступні під час використання Excel.
        • Цей робочий зошит (за замовчуванням) - макрос буде збережений в поточній книзі і буде доступний при повторному відкритті книги або наданні доступу до неї іншим користувачам.
        • Новий робочий зошит - створює нову робочу книгу і записує макрос в цю книгу.
      • В рамках проекту Опис введіть короткий опис того, що робить ваш макрос (необов'язково).

        Хоча це поле не є обов'язковим, я рекомендую завжди надавати короткий опис. Коли ви створюєте багато різних макросів, це допоможе вам швидко зрозуміти, що робить кожен макрос.

      • Натисніть ГАРАЗД. для початку запису макросу.

    3. Виконайте дії, які хочете автоматизувати (див. приклад макросу запису).
    4. Після завершення натисніть кнопку Зупинити запис на кнопці Розробник рахунок:

      Або аналогічну кнопку на сторінці Статус в барі:

    Приклад запису макросу в Excel

    Щоб побачити, як це працює на практиці, запишемо макрос, який застосовує деяке форматування до виділених комірок. Для цього виконаємо наступні дії:

    1. Виділіть одну або декілька комірок, які потрібно відформатувати.
    2. Про це йдеться на Розробник вкладка або Статус бар, натисніть Запис макросу .
    3. В рамках проекту Запис макросу налаштуйте наступні параметри:
      • Назвіть макрос Заголовок_Форматирование (тому що ми будемо форматувати заголовки стовпців).
      • Встановіть курсор в поле Клавіша швидкого доступу і одночасно натисніть клавіші Shift + F. В результаті макросу буде призначено комбінацію клавіш Ctrl + Shift + F.
      • Виберіть, щоб зберегти макрос у цій книзі.
      • За Опис використовуйте наступний текст, що пояснює, що робить макрос: Робить текст напівжирним, додає колір заливки та вирівнює по центру .
      • Натисніть ГАРАЗД. щоб почати запис.

    4. Відформатуйте попередньо виділені комірки так, як вам потрібно. У цьому прикладі ми використовуємо напівжирне форматування тексту, світло-блакитний колір заливки та вирівнювання по центру.

      Порада. Не виділяйте комірки після того, як ви почали запис макросу. Це гарантує, що все форматування буде застосовано до відбір а не конкретний діапазон.

    5. Натисніть Зупинити запис або на Розробник або на вкладці Статус в барі.

    Все, ваш макрос записано, тепер ви можете виділити будь-який діапазон комірок на будь-якому аркуші, натиснути призначену комбінацію клавіш (Ctrl+Shift+F), і до виділених комірок буде негайно застосовано ваше власне форматування.

    Як працювати із записаними макросами в Excel

    До всіх основних опцій, які надає Excel для макросів, можна отримати доступ за допомогою кнопки Макрос Щоб відкрити діалогове вікно, натисніть кнопку Макроси на кнопці Розробник або натисніть комбінацію клавіш Alt+ F8.

    У діалоговому вікні, що відкрилося, можна переглянути список макросів, доступних у всіх відкритих книгах або пов'язаних з конкретною книгою, і скористатися наступними опціями:

    • Біжи - виконує вибраний макрос.
    • Заходьте в - дозволяє налагодити та протестувати макрос в редакторі Visual Basic.
    • Редагувати - відкриває виділений макрос в редакторі VBA, де можна переглянути і відредагувати його код.
    • Видалити - назавжди видаляє вибраний макрос.
    • Опції - дозволяє змінювати властивості макросу, такі як асоційовані Ярлик ключ і Опис .

    Як переглянути макроси в Excel

    Код макросу Excel можна переглянути і змінити в редакторі Visual Basic Editor. Щоб відкрити редактор, натисніть комбінацію клавіш Alt + F11 або клацніть по кнопці Visual Basic на кнопці Розробник рахунок.

    Якщо ви бачите редактор VB вперше, нехай вас це не бентежить і не лякає. Ми не будемо говорити про структуру або синтаксис мови VBA. Цей розділ лише дасть вам базове уявлення про те, як працюють макроси Excel і що насправді робить запис макросу.

    Редактор VBA має декілька вікон, але ми зупинимося на двох основних:

    Project Explorer - відображає список всіх відкритих робочих книг та їх аркушів. Додатково відображаються модулі, форми користувачів та модулі класів.

    Вікно коду - це місце, де можна переглядати, редагувати і писати код VBA для кожного об'єкта, що відображається в Провіднику проекту.

    Коли ми записали зразок макросу, в бекенді відбулося наступне:

    • Новий модуль ( Модель1 ) було вставлено.
    • Код макросу на мові VBA був написаний у вікні Code.

    Щоб побачити код конкретного модуля, двічі клацніть по модулю ( Модуль 1 У нашому випадку) у вікні Project Explorer. Як правило, макрокод має ці частини:

    Назва макросу

    У мові VBA будь-який макрос починається з Sub за яким слідує ім'я макросу і закінчується символами End Sub де "Sub" є скороченням від Підпрограма (також відома як Процедура Наш приклад макросу називається Header_Formatting() тому код починається з цього рядка:

    Sub Header_Formatting()

    Якщо Ви бажаєте перейменувати макрос просто видаліть поточну назву і введіть нову безпосередньо у вікні "Код".

    Коментарі

    Рядки, що починаються з апострофа (') і за замовчуванням відображаються зеленим кольором, не виконуються. Це коментарі, додані в інформаційних цілях. Рядки коментарів можна сміливо видаляти без шкоди для працездатності коду.

    Зазвичай, записаний макрос має 1 - 3 рядки коментарів: назва макросу (обов'язково); опис та ярлик (якщо вказано перед записом).

    Виконавчий код

    Після коментарів йде код, який виконує записані вами дії. Іноді в записаному макросі може бути багато зайвого коду, який все одно може стати в нагоді для того, щоб розібратися, як все влаштовано в VBA :)

    На зображенні нижче показано, що робить кожна частина коду нашого макросу:

    Як запустити записаний макрос

    Запускаючи макрос, ви наказуєте Excel повернутися до записаного коду VBA і виконати ті ж самі дії. Існує кілька способів запуску записаного макросу в Excel, і ось найшвидші з них:

    • Якщо ви призначили комбінація клавіш до макросу, натисніть цю комбінацію клавіш.
    • Натисніть Alt + 8 або клацніть по кнопці Макроси на кнопці Розробник У вкладці Макрос виберіть потрібний макрос і натисніть кнопку Біжи .

    Також можна запустити записаний макрос, натиснувши на власну кнопку. Ось як це зробити: Як створити кнопку макросу в Excel.

    Як зберегти макроси в Excel

    Незалежно від того, записали ви макрос або написали код VBA вручну, для збереження макросу необхідно зберегти книгу як книгу з підтримкою макросів (розширення .xlms). Ось як це зробити:

    1. У робочій книзі, що містить макрос, натисніть кнопку Зберегти або натисніть клавіші Ctrl + S .
    2. В рамках проекту Зберегти як виберіть у діалоговому вікні Книга Excel з підтримкою макросів (*.xlsm) від Зберегти як тип у випадаючому списку, а потім натисніть Зберегти :

    Макроси Excel: що записується, а що ні

    Як ви щойно переконалися, записати макрос в Excel досить просто. Але для створення ефективних макросів потрібно розуміти, що відбувається за кадром.

    Що фіксується

    Записник макросів Excel фіксує досить багато речей - майже всі клацання миші та натискання клавіш. Тому слід ретельно продумувати свої дії, щоб уникнути зайвого коду, який може призвести до несподіваної поведінки вашого макросу. Нижче наведено кілька прикладів того, що записує Excel:

    • Виділення комірок за допомогою миші або клавіатури. Записується тільки останнє виділення перед дією. Наприклад, якщо виділити діапазон A1:A10, а потім клацнути по комірці A11, то буде записано тільки виділення комірки A11.
    • Форматування комірок, наприклад, заливка і колір шрифту, вирівнювання, межі тощо.
    • форматування чисел, таких як відсотки, валюта тощо.
    • Редагування формул і значень. Зміни фіксуються після натискання клавіші Enter .
    • Прокрутка, переміщення вікон Excel, перехід на інші аркуші та книги.
    • Додавання, іменування, переміщення та видалення робочих аркушів.
    • Створення, відкриття та збереження робочих книг.
    • Запуск інших макросів.

    Що не можна записувати

    Незважаючи на те, що Excel може записувати багато різних речей, деякі функції виходять за рамки можливостей Macro Recorder:

    • Налаштування стрічки Excel та панелі інструментів швидкого доступу.
    • Дії всередині діалогових вікон Excel, такі як Умовне форматування або Знайти і замінити (фіксується лише результат).
    • Взаємодія з іншими програмами. Наприклад, не можна зафіксувати копіювання/вставку з книги Excel в документ Word.
    • Все, що пов'язано з редактором VBA. Це накладає найістотніші обмеження - багато речей, які можна зробити на рівні програмування, не можуть бути записані:
      • Створення користувацьких функцій
      • Відображення користувацьких діалогових вікон
      • Виготовлення петель типу Для наступних , За кожну , Do While і т.д.
      • У мові VBA можна використовувати умови оцінки IF Then Else оператор для перевірки умови і виконання деякого коду, якщо умова істинна, або іншого коду, якщо умова хибна.
      • Виконання коду на основі подій. За допомогою VBA можна використовувати багато подій для запуску коду, пов'язаного з цією подією (наприклад, відкриття робочої книги, перерахунок робочого аркуша, зміна виділення і так далі).
      • Використання аргументів. При записі макросу в редакторі VBA можна вказати вхідні аргументи для виконання макросом певної задачі. Записаний макрос не може мати аргументів, оскільки він є незалежним і не пов'язаний з іншими макросами.
      • Розуміння логіки. Наприклад, якщо записати макрос, який копіює певні комірки, скажімо, в Всього Excel запише тільки адреси скопійованих комірок. За допомогою VBA можна запрограмувати логіку, тобто скопіювати значення в рядку Всього гребти.

    Хоча наведені вище обмеження встановлюють багато меж для запису макросів, вони все ж є хорошою відправною точкою. Навіть якщо ви не маєте уявлення про мову VBA, ви можете швидко записати макрос, а потім проаналізувати його код.

    Корисні поради щодо запису макросів в Excel

    Нижче ви знайдете кілька порад і зауважень, які потенційно можуть заощадити вам багато часу і нервів, зробивши вашу криву навчання більш плавною, а макроси більш ефективними.

    Використовуйте відносні посилання для запису макросів

    За замовчуванням Excel використовує абсолютний посилання Це означає, що ваш код VBA завжди буде посилатися на ті самі клітинки, які ви вибрали, незалежно від того, де ви знаходитесь на аркуші під час запуску макросу.

    Однак, є можливість змінити поведінку за замовчуванням на відносне посилання У цьому випадку VBA не буде жорстко кодувати адреси комірок, а буде працювати відносно активної (виділеної в даний момент) комірки.

    Щоб записати макрос з відносним посиланням, натисніть кнопку Використання Відносні посилання на кнопці Розробник Щоб повернутися до абсолютної прив'язки, натисніть кнопку ще раз, щоб вимкнути її.

    Наприклад, якщо ви записали створення таблиці з абсолютним посиланням за замовчуванням, ваш макрос завжди буде відтворювати таблицю в тому ж місці (в даному випадку, Заголовок в А1, Пункт 1 в А2, Пункт2 у форматі А3).

    Sub Absolute_Referencing() Range("A1" ). Select ActiveCell.FormulaR1C1 = "Header" Range("A2" ). Select ActiveCell.FormulaR1C1 = "Item1" Range("A3" ). Select ActiveCell.FormulaR1C1 = "Item2" End Sub

    Якщо записати цей же макрос з відносним посиланням, то таблиця буде створена там, де ви поставите курсор перед запуском макросу ( Заголовок в активній комірці, Пункт 1 у нижній комірці і т.д.).

    Sub Relative_Referencing() ActiveCell.FormulaR1C1 = "Заголовок" ActiveCell.Offset(1, 0).Range("A1" ). Select ActiveCell.FormulaR1C1 = "Елемент1" ActiveCell.Offset(1, 0).Range("A1" ). Select ActiveCell.FormulaR1C1 = "Елемент2" ActiveCell.Offset(1, 0).Range("A1" ). Select End Sub

    Нотатки:

    • При використанні відносних посилань обов'язково виберіть початкову комірку перед початком запису макросу.
    • Відносні посилання працюють не для всього. Деякі функції Excel, наприклад, перетворення діапазону в таблицю, вимагають абсолютних посилань.

    Вибір діапазонів за допомогою комбінацій клавіш

    При виділенні комірки або діапазону комірок за допомогою миші або клавіш зі стрілками Excel записує адреси комірок. Отже, при кожному запуску макросу записані операції будуть виконуватися точно над тими ж комірками. Якщо це не те, що ви хочете, використовуйте комбінації клавіш для виділення комірок і діапазонів.

    Як приклад, запишемо макрос, який задає певний формат (дд-ммм-гг) для дат в таблиці нижче:

    Для цього ви фіксуєте наступні операції: натискаєте Ctrl + 1, щоб відкрити вікно Формат комірок діалогове вікно> Дата> вибрати формат> ОК. Якщо ваш запис включає виділення діапазону за допомогою миші або клавіш зі стрілками, то Excel видасть наступний VBA-код:

    Sub Date_Format() Range( "A2:B4" ). Select Selection.NumberFormat = "d-mmm-yy" End Sub

    При виконанні наведеного вище макросу кожного разу буде вибиратися діапазон A2:B4. Якщо ви додасте в таблицю ще якісь рядки, то вони не будуть оброблятися макросом.

    Тепер давайте подивимося, що відбувається, коли ви вибираєте таблицю за допомогою комбінації клавіш.

    Помістіть курсор в ліву верхню комірку цільового діапазону (в даному прикладі - А2), почніть запис і натисніть Ctrl + Shift + End . В результаті перший рядок коду буде виглядати так:

    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).

    Цей код виділяє всі клітинки від активної до останньої використаної клітинки, тобто всі нові дані будуть включені у виділення автоматично.

    Також можна використовувати комбінацію клавіш Ctrl + Shift + Стрілки:

    • Ctrl + Shift + стрілка вправо, щоб виділити всі використані комірки вправо, а потім
    • Ctrl + Shift + стрілка вниз, щоб виділити всі використані комірки вниз.

    При цьому буде сформовано два рядки коду замість одного, але результат буде той самий - будуть виділені всі комірки з даними, що знаходяться нижче і правіше активної комірки:

    Range(Selection, Selection. End (xlToRight)). Select Range(Selection, Selection. End (xlDown)). Select

    Записати макрос для виділення, а не конкретних комірок

    Описаний вище спосіб (тобто виділення всіх використовуваних комірок, починаючи з активної) чудово підходить для виконання однакових операцій над усією таблицею. Однак у деяких ситуаціях може знадобитися, щоб макрос обробляв певний діапазон, а не всю таблицю.

    Для цього в VBA передбачено Відбір об'єкт, який посилається на поточну виділену комірку (комірки). Більшість речей, які можна зробити з діапазоном, можна зробити і з виділенням. Яку перевагу це дає? У багатьох випадках під час запису взагалі не потрібно нічого виділяти - достатньо написати макрос для активної комірки. А потім виділити будь-який потрібний діапазон, запустити макрос, і він буде маніпулювати всім виділенням.

    Наприклад, цей однорядковий макрос може форматувати будь-яку кількість виділених комірок у відсотках:

    Sub Percent_Format() Selection.NumberFormat = "0.00%" End Sub

    Ретельно плануйте те, що ви записуєте

    Записник макросів Microsoft Excel фіксує практично всі ваші дії, включаючи помилки, які ви робите і виправляєте. Наприклад, якщо ви натискаєте Ctrl + Z, щоб щось скасувати, це також буде записано. У підсумку, у вас може з'явитися багато непотрібного коду. Щоб уникнути цього, або відредагуйте код в редакторі VB, або зупиніть запис, видаліть дефектний макрос і почніть запис заново.

    Створення резервної копії або збереження книги перед запуском макросу

    Результат роботи макросів Excel не можна скасувати. Тому перед першим запуском макросу має сенс створити копію робочої книги або хоча б зберегти поточну роботу, щоб запобігти несподіваним змінам. Якщо макрос зробив щось не так, просто закрийте робочу книгу без збереження.

    Зберігайте записані макроси короткими

    При автоматизації послідовності різних завдань може виникнути спокуса записати їх всі в одному макросі. Є дві основні причини не робити цього. По-перше, довгий макрос складно записати гладко і без помилок. По-друге, великі макроси складно осмислювати, тестувати і налагоджувати. Тому хороший варіант - розбити великий макрос на кілька частин. Наприклад, при створенні зведеної таблиціз декількох джерел, можна використовувати один макрос для імпорту інформації, інший - для консолідації даних, а третій - для форматування таблиці.

    Сподіваюся, цей урок дав вам уявлення про те, як записати макрос в Excel. У будь-якому випадку, дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.