Как да запишете макрос в Excel

  • Споделя Това
Michael Brown

Урок стъпка по стъпка за начинаещи за записване, преглеждане, стартиране и запазване на макрос. Ще научите и някои вътрешни механизми на работа на макросите в Excel.

Макросите са чудесен начин за автоматизиране на повтарящи се задачи в Excel. Ако правите едни и същи неща отново и отново, запишете движенията си като макрос и му задайте клавишна комбинация. Сега можете да извършвате всички записани действия автоматично с едно натискане на клавиш!

    Как да запишете макрос в Excel

    Подобно на други инструменти на VBA макросите на Excel се намират в Разработчик Така че първото нещо, което трябва да направите, е да добавите раздела Developer (Разработчик) в лентата на Excel.

    За да запишете макрос в Excel, изпълнете следните стъпки:

    1. На Разработчик в раздела Код щракнете върху групата Записване на макрос бутон.

      Алтернативно, щракнете върху Записване на макрос бутон в лявата част на Статус бар:

      Ако предпочитате да работите с клавиатурата, а не с мишката, натиснете следната последователност от клавиши Alt , L , R (един по един, а не всички клавиши наведнъж).

    2. В Записване на макрос в диалоговия прозорец, който се появява, конфигурирайте основните параметри на вашия макрос:
      • В Macro име Опитайте се да го направите смислено и описателно, за да можете по-късно бързо да откривате макроса в списъка.

        В имената на макросите можете да използвате букви, цифри и подчертавания; първият символ трябва да е буква. Не се допускат интервали, така че трябва да запазите името едносрично, като започнете всяка част с главна буква (напр. MyFirstMacro ) или отделяйте думите с подчертаване (напр. My_First_Macro ).

      • В Клавиш за бърз достъп въведете произволна буква, за да зададете клавишна комбинация на макроса (по избор).

        Позволени са както главни, така и малки букви, но би било разумно да използвате комбинации от главни клавиши ( Ctrl + Shift + буква ), тъй като бързите клавиши на макросите отменят всички бързи клавиши по подразбиране на Excel, докато работната книга, съдържаща макроса, е отворена. Например, ако присвоите Ctrl + S на макрос, ще загубите възможността да запазвате файловете на Excel с бърз клавиш. Присвояването на Ctrl + Shift + S ще запазистандартен пряк път за запазване.

      • От Съхранявайте макроса в Изберете къде да съхранявате макроса си в падащия списък:
        • Лична работна книга за макроси - съхранява макроса в специална работна книга, наречена Personal.xlsb . Всички макроси, съхранени в тази работна книга, са достъпни винаги, когато използвате Excel.
        • Тази работна книга (по подразбиране) - макросът ще бъде съхранен в текущата работна книга и ще бъде достъпен, когато отворите работната книга отново или я споделите с други потребители.
        • Нова работна книга - създава нова работна книга и записва макроса в тази работна книга.
      • В Описание въведете кратко описание на функцията на вашия макрос (по избор).

        Въпреки че това поле не е задължително, бих препоръчал винаги да предоставяте кратко описание. Когато създавате много различни макроси, това ще ви помогне бързо да разберете какво прави всеки макрос.

      • Кликнете върху OK за да започнете да записвате макроса.

    3. Извършете действията, които искате да автоматизирате (моля, вижте примера за макрос за запис).
    4. Когато приключите, щракнете върху Спиране на записването на бутона Разработчик таб:

      Или аналогичния бутон в Статус бар:

    Пример за записване на макрос в Excel

    За да видите как работи на практика, нека запишем макрос, който прилага известно форматиране към избраните клетки. За целта направете следното:

    1. Изберете една или повече клетки, които искате да форматирате.
    2. На Разработчик раздел или Статус щракнете върху Записване на макрос .
    3. В Записване на макрос диалогов прозорец, конфигурирайте следните настройки:
      • Име на макроса Header_Formatting (защото ще форматираме заглавията на колоните).
      • Поставете курсора в Клавиш за бърз достъп и натиснете едновременно клавишите Shift + F. Това ще присвои на макроса бързата клавишна комбинация Ctrl + Shift + F.
      • Изберете да съхраните макроса в тази работна книга.
      • За Описание , използвайте следния текст, който обяснява какво прави макросът: Направете текста удебелен, добавете цвят на запълване и центрирайте .
      • Кликнете върху OK за да започнете да записвате.

    4. Форматирайте предварително избраните клетки по желания от вас начин. В този пример използваме форматиране на текста с удебелен шрифт, светлосин цвят на запълване и подравняване по средата.

      Съвет. Не избирайте клетки, след като сте започнали да записвате макроса. Това ще гарантира, че всички форматирания ще се приложат към избор , а не конкретен диапазон.

    5. Кликнете върху Спиране на записването или на Разработчик или раздела Статус бар.

    Това е! Вашият макрос е записан. Сега можете да изберете произволен диапазон от клетки във всеки лист, да натиснете зададената бърза клавишна комбинация ( Ctrl+ Shift+ F ) и вашето потребителско форматиране ще бъде приложено незабавно към избраните клетки.

    Как да работите със записани макроси в Excel

    Всички основни опции, които Excel предоставя за макросите, са достъпни чрез Macro За да отворите диалоговия прозорец, щракнете върху Макроси на бутона Разработчик или натиснете бързата клавишна комбинация Alt+F8.

    В диалоговия прозорец, който се отваря, можете да видите списък с макроси, налични във всички отворени работни книги или свързани с определена работна книга, и да използвате следните опции:

    • Изпълнявайте - изпълнява избрания макрос.
    • Влезте в - ви позволява да отстранявате грешки и да тествате макроса в редактора на Visual Basic.
    • Редактиране на - отваря избрания макрос в редактора VBA, където можете да преглеждате и редактирате кода.
    • Изтриване на - изтрива за постоянно избрания макрос.
    • Опции - позволява промяна на свойствата на макроса, като например свързания Кратък път ключ и Описание .

    Как да видите макросите в Excel

    Кодът на макрос на Excel може да се преглежда и променя в редактора на Visual Basic. За да отворите редактора, натиснете Alt + F11 или щракнете върху Visual Basic на бутона Разработчик таб.

    Ако виждате редактора VB за първи път, моля, не се чувствайте обезкуражени или уплашени. Няма да говорим за структурата или синтаксиса на езика VBA. Този раздел просто ще ви даде някои основни познания за това как работят макросите на Excel и какво всъщност прави записването на макрос.

    Редакторът VBA има няколко прозореца, но ние ще се спрем на двата основни:

    Проект Explorer - показва списък на всички отворени работни книги и техните листове. Освен това показва модули, потребителски форми и модули на класове.

    Прозорец с код - тук можете да преглеждате, редактирате и пишете VBA код за всеки обект, показан в Project Explorer.

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

    • Нов модул ( Moduel1 ) е вмъкнат.
    • Кодът на макроса във VBA е записан в прозореца Код.

    За да видите кода на конкретен модул, щракнете два пъти върху модула ( Модул1 в нашия случай) в прозореца Project Explorer. Обикновено макрокодът се състои от следните части:

    Име на макрос

    Във VBA всеки макрос започва с Под последвано от името на макроса и завършва с Край на Sub , където "Sub" е съкращение за Подпрограма (наричан също Процедура ). Нашият примерен макрос се нарича Header_Formatting() , така че кодът започва с този ред:

    Sub Header_Formatting()

    Ако желаете да преименуване на макроса , просто изтрийте текущото име и въведете ново директно в прозореца Code.

    Коментари

    Редовете с префикс апостроф ('), които по подразбиране се показват в зелено, не се изпълняват. Това са коментари, добавени с информационна цел. Редовете с коментари могат спокойно да бъдат премахнати, без това да повлияе на функционалността на кода.

    Обикновено записаният макрос има 1 - 3 реда за коментар: име на макроса (задължително); описание и пряк път (ако е зададен преди записа).

    Изпълним код

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

    На изображението по-долу е показано какво прави всяка част от кода на нашия макрос:

    Как да стартирате записан макрос

    Чрез стартирането на макрос указвате на Excel да се върне към записания VBA код и да изпълни точно същите стъпки. Има няколко начина за стартиране на записан макрос в Excel и ето най-бързите от тях:

    • Ако сте задали бърза клавишна комбинация на макроса, натиснете този пряк път.
    • Натиснете Alt + 8 или щракнете върху Макроси на бутона Разработчик таб. В Macro диалогов прозорец, изберете желания макрос и щракнете върху Изпълнявайте .

    Възможно е също така да стартирате записан макрос, като щракнете върху свой собствен бутон. Ето стъпките за създаване на такъв: Как да създадем макробутон в 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. Това налага най-съществените ограничения - много неща, които могат да се направят на ниво програмиране, не могат да бъдат записани:
      • Създаване на потребителски функции
      • Показване на потребителски диалогови прозорци
      • Създаване на цикли като За следващия , За всеки , Правете, докато , и т.н.
      • Оценяване на условия. Във VBA можете да използвате Ако тогава и след това за проверка на дадено условие и изпълнение на определен код, ако условието е вярно, или на друг код, ако условието е грешно.
      • Изпълнение на код въз основа на събития. С VBA можете да използвате много събития, за да изпълните код, свързан с това събитие (например отваряне на работна книга, преизчисляване на работен лист, промяна на избора и т.н.).
      • Използване на аргументи. Когато записвате макрос в редактора VBA, можете да предоставите входни аргументи, за да може макросът да изпълни определена задача. Записаният макрос не може да има никакви аргументи, тъй като е независим и не е свързан с други макроси.
      • Например, ако запишете макрос, който копира определени клетки, например в Общо Excel ще запише само адресите на копираните клетки. С VBA можете да кодирате логиката, т.е. да копирате стойностите в Общо ред.

    Въпреки че горните ограничения поставят много граници за записаните макроси, те все пак са добра отправна точка. Дори да нямате представа от езика VBA, можете бързо да запишете макрос и след това да анализирате кода му.

    Полезни съвети за записване на макроси в Excel

    По-долу ще намерите няколко съвета и бележки, които могат да ви спестят много време и нерви, да направят обучението ви по-плавно, а макросите - по-ефективни.

    Използване на относителни препратки за запис на макроси

    По подразбиране Excel използва абсолютен позоваване на Това означава, че кодът на VBA винаги ще се отнася до точно същите клетки, които сте избрали, без значение къде се намирате в работния лист, когато стартирате макроса.

    Възможно е обаче да промените поведението по подразбиране на относително препращане В този случай VBA няма да кодира твърдо адресите на клетките, а ще работи относително към активната (текущо избрана) клетка.

    За да запишете макрос с относително препращане, щракнете върху Използвайте Относителни препратки на бутона Разработчик За да се върнете към абсолютното препращане, щракнете отново върху бутона, за да го изключите.

    Например, ако запишете настройка на таблица с абсолютното препращане по подразбиране, вашият макрос винаги ще пресъздава таблицата на същото място (в този случай, Заглавие в A1, Позиция1 в A2, Позиция2 в A3).

    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 = "Header" ActiveCell.Offset(1, 0).Range("A1" ). Select ActiveCell.FormulaR1C1 = "Item1" ActiveCell.Offset(1, 0).Range("A1" ). Select ActiveCell.FormulaR1C1 = "Item2" ActiveCell.Offset(1, 0).Range("A1" ). Select End Sub

    Бележки:

    • Когато използвате относителни препратки, не забравяйте да изберете началната клетка, преди да започнете да записвате макроса.
    • Някои функции на Excel, например преобразуването на диапазон в таблица, изискват абсолютни препратки.

    Избиране на диапазони с помощта на бързи клавишни комбинации

    Когато избирате клетка или диапазон от клетки с помощта на мишката или клавишите със стрелки, Excel записва адресите на клетките. Следователно, когато изпълнявате макрос, записаните операции ще се изпълняват точно върху същите клетки. Ако не искате това, използвайте бързи клавиши за избор на клетки и диапазони.

    Като пример, нека запишем макрос, който задава определен формат (d-mmm-yy) за датите в таблицата по-долу:

    За тази цел записвате следните операции: натиснете Ctrl + 1, за да отворите Форматиране на клетките диалогов прозорец> Date> choose format> OK. Ако записът ви включва избор на диапазона с мишката или клавишите със стрелки, Excel ще създаде следния код VBA:

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

    При изпълнение на горния макрос всеки път ще бъде избиран диапазонът A2:B4. Ако добавите още няколко реда към таблицата, те няма да бъдат обработени от макроса.

    Сега нека видим какво ще се случи, когато изберете таблицата с помощта на бърз клавиш.

    Поставете курсора в горната лява клетка на целевия диапазон (A2 в този пример), започнете да записвате и натиснете 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)).

    Записване на макрос за избор, а не за конкретни клетки

    Горепосоченият метод (т.е. избор на всички използвани клетки, започващи от активната клетка) работи чудесно за извършване на същите операции върху цялата таблица. В някои ситуации обаче може да искате макросът да обработва определен диапазон, а не цялата таблица.

    За тази цел VBA предоставя функцията Избор обект, който се отнася до текущо избраната(ите) клетка(и). Повечето неща, които могат да се направят с диапазон, могат да се направят и с избора. Какво предимство ви дава това? В много случаи не е необходимо да избирате нищо, докато записвате - просто напишете макрос за активната клетка. И след това изберете произволен диапазон, който искате, стартирайте макроса и той ще манипулира целия избор.

    Например този макрос от един ред може да форматира произволен брой избрани клетки като проценти:

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

    Планирайте внимателно какво записвате

    Макрозаписващото устройство на Microsoft Excel записва почти цялата ви дейност, включително грешките, които допускате и поправяте. Например, ако натиснете Ctrl + Z, за да върнете нещо назад, това също ще бъде записано. В крайна сметка може да се окажете с много ненужен код. За да избегнете това, редактирайте кода в редактора на VB или спрете записа, изтрийте недостатъчния макрос и започнете записа отначало.

    Създаване на резервно копие или запазване на работната книга преди стартиране на макрос

    Резултатът от макросите на Excel не може да бъде върнат назад. Затова преди първото стартиране на макрос е разумно да създадете копие на работната книга или поне да запазите текущата си работа, за да предотвратите неочаквани промени. Ако макросът направи нещо погрешно, просто затворете работната книга, без да я запазвате.

    Поддържайте записаните макроси кратки

    Когато автоматизирате поредица от различни задачи, може да се изкушите да ги запишете всички в един макрос. Има две основни причини да не го правите. Първо, трудно е да запишете дълъг макрос гладко и без грешки. Второ, големите макроси са трудни за разбиране, тестване и отстраняване на грешки. Затова е добре да разделите голям макрос на няколко части. Например, когато създавате обобщена таблицаот няколко източника, можете да използвате един макрос за импортиране на информация, друг - за консолидиране на данните, а трети - за форматиране на таблицата.

    Надявам се, че това ръководство ви е дало представа за това как да записвате макрос в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.