Как в excel написать макрос: примеры и как сделать / Skillbox Media

Как написать формулы с помощью макросов в Excel подробное руководство

Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.

Уровень мастерства: Средний

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

Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.

Совет № 1: Свойство Formula

Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.

Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:

  1. Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
  2. Строка формулы должна начинаться со знака равенства = после первой кавычки.

Вот простой пример формулы в макросе.

Sub Formula_Property()
  ' Формула представляет собой строку текста, заключенную в кавычки
  ' Начинается со знака =
  Range("B10").Formula = "=SUM(B4:B9)"
End Sub

Свойство Formula также можно использовать для чтения существующей формулы в ячейке.

Совет № 2: Используйте Macro Recorder

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

Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.

  1. Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
  2. Введите формулу или отредактируйте существующую формулу.
  3. Нажмите Enter, чтобы ввести формулу.
  4. Код создается в макросе.

Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.

Sub Macro10()
' Используйте средство записи макросов для создания кода для сложных формул с
' специальны символы и относительные ссылки
  ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")"
    
End Sub

Совет № 3: Нотация формулы стиля R1C1

Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.

Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.

R1C1 обозначает строки и столбцы.

Относительные ссылки

Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.

Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.

R[-3]C[2]

Отрицательные числа идут вверх по строкам и столбцам слева.

Положительные числа идут вниз по строкам и столбцам справа.

Абсолютные ссылки

Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.

Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1

При создании смешанных ссылок относительный номер строки или
столбца будет зависеть от того, в какой ячейке находится формула.

Проще всего использовать макро-рекордер, чтобы понять это.

Свойство FormulaR1C1 и свойство формулы

Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.

Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.

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

Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.

Как записать макросы в Microsoft Excel

Вы можете автоматизировать любые повторяющиеся задачи в Excel, используя макросы. Вот как это сделать.

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

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Если вы когда-либо записывали макросы в Word, то вы будете знакомы с процессом. Вы можете написать свои собственные макросы, используя VBA (Visual Basic для приложений), но намного проще записать их визуально с помощью инструмента записи макросов. Вот как.

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

Для большинства пользователей Excel самый простой способ записи макроса в Microsoft Excel — это использовать Macro Recorder. Во время записи Macro Recorder вы выполняете действие. Шаги, которые вы делаете, сохраняются, преобразуются в действия, которые Excel может повторить.

Чтобы начать запись макроса Excel, вам нужно получить доступ к вкладке разработчик в ленточной панели. Обычно это скрыто, поэтому вам придется настроить панель ленты, чтобы она отображалась первой.

Для этого щелкните правой кнопкой мыши на ленте и нажмите Настроить ленту,

В Параметры Excel нажмите, чтобы включить флажок разработчик в вкладке Настроить ленту. Нажмите Ok сохранить.

Панель ленты теперь будет отображать вкладку разработчик между вкладками Просмотр и Справка.

Чтобы начать запись макроса, нажмите Разработчик> Запись макроса.

В Запись макроса , дайте вашему макросу запоминающееся имя и описание. Чтобы привязать макрос к сочетанию клавиш, введите букву под Быстрая клавиша, хотя это необязательно.

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

Ok начать запись вашего макроса. Каждый ваш шаг после этой точки будет записан. Например, если вы решите выполнить действие, например, изменить формат ячейки, эти шаги будут записаны.

Как только вы записали свои шаги в макрос, нажмите Остановить запись в вкладке разработчик.

Нажмите на макрос кнопка в вкладке разработчик, чтобы увидеть список ваших записанных макросов.

Чтобы использовать макрос, выберите его, затем нажмите Запустить.

Если вы добавили сочетание клавиш к макросу, вы можете использовать его для запуска макроса.

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

Вполне возможно редактировать записанный макрос, чтобы добавлять, изменять или удалять шаги полностью. К сожалению, для этого потребуется знать, как писать и редактировать код VBA (Visual Basic для приложений), чтобы иметь возможность вносить изменения.

Если вы хотите внести изменения в записанный макрос (и вы готовы писать в VBA), нажмите Разработчик> Макросы выберите свой макрос, затем нажмите редактировать.

Это загрузит редактор Office VBA. Вы можете внести изменения в код VBA напрямую, нажав Запустить, чтобы проверить ваши изменения, чтобы убедиться, что они работают.

После внесения изменений в макрос закройте редактор Office VBA, а затем сохраните книгу Excel.

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

Сохранение ваших макросов Excel

Начав использовать макросы в Excel, вы можете записывать любые действия или задачи и повторять их в любое время.

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

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Метки записи:
#Excel

Написание макросов VBA с нуля

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

Эта статья призвана помочь вам начать кодирование макросов с нуля в VBA. Вы узнаете, где хранятся макросы, напишете базовый макрос и изучите основы программирования на VBA с использованием переменных, логики и циклов.

Начало работы

VBA и редактор Visual Basic

VBA, или Visual Basic для приложений, — это язык, на котором написаны макросы. Все макросы хранятся в виде кода VBA, независимо от того, написаны ли они вручную или созданы с помощью средства записи макросов.

Вы можете получить доступ ко всему коду VBA в книге с помощью редактора Visual Basic. Это специальный текстовый редактор и отладчик, встроенный во все офисные приложения, включая Excel. Как правило, вы открываете этот редактор с помощью кнопки 9.0013 ALT+F11 сочетание клавиш в Excel, но вы также можете получить к нему доступ с вкладки Excel Developer , если она включена.

Исследователь проекта

Project Explorer — это окно внутри VB Editor, которое показывает вам все элементы, которые могут содержать код VBA. Если вы не видите это окно, нажмите F5 , чтобы оно появилось, или выберите Project Explorer  в меню View .

Двойной щелчок по элементу в Project Explorer покажет код этого элемента. Существует несколько типов элементов, которые могут отображаться в Project Explorer:

  • Рабочие тетради
  • Рабочие листы
  • Пользовательские формы
  • Модули класса
  • Модули (в этих элементах хранятся макросы)

Хотя все эти типы элементов могут включать код VBA, лучше всего кодировать макросы в модулях.

Создание вашего первого макроса

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

В списке макросов показаны все макросы в вашей книге. Из этого списка вы можете отредактировать существующий макрос или создать новый.

Чтобы создать новый макрос, используя список макросов:

  • Выберите вкладку «Разработчик» и щелкните Макросы (или нажмите ALT+F8 )
  • Введите новое имя для вашего макроса, затем нажмите «Создать»

После нажатия «Создать» появится редактор VB, показывающий только что созданный макрос. При необходимости Excel создаст новый модуль для макроса.

Вручную в VB Editor

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

Чтобы добавить макрос вручную:

  • Открыть редактор VB ( ALT+F11 )
  • Либо:
    • Добавьте новый модуль, нажав Вставить > Модуль в меню (модуль откроется автоматически)
    • ИЛИ дважды щелкните существующий модуль в Project Explorer, чтобы открыть его
  • В модуле введите код вашего нового макроса
 Подпрограмма MyMacro()

Конец суб 

Эти две строки указывают начало и конец макроса с именем «MyMacro» (обратите внимание на круглые скобки, которые обязательны). Это будет отображаться в диалоговом окне «Просмотр макросов» в Excel и может быть назначено кнопке (хотя она еще ничего не делает).

Добавьте код в макрос

Теперь давайте добавим некоторый код между строками «Sub» и «End Sub», чтобы этот макрос действительно что-то делал:

 Подпрограмма MyMacro()
    Диапазон («A1»). Значение = «Привет, мир!»
Конец суб 

Основные структуры кода

Объект полигона

Excel VBA использует объект диапазона для представления ячеек на листе. В приведенном выше примере создается объект Range с кодом Range(«A1») для доступа к значению ячейки A1.
Объекты диапазона в основном используются для установки значений ячеек:

 Диапазон ("A1"). Значение = 1 
 Диапазон ("A1"). Значение = "Первая ячейка" 

Обратите внимание, что при определении значений ячеек как чисел вы просто вводите число, но при вводе текста вы должны заключать текст в кавычки.

Диапазоны

также можно использовать для доступа ко многим свойствам ячеек, таким как их шрифт, границы, формулы и многое другое.

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

 Диапазон("A1").Шрифт.Жирный = True 

Вы также можете установить формулу ячейки:

 Диапазон («A1»). Формула = «= Сумма (A2: A10)» 

В Excel вы можете выбрать блок ячеек с помощью курсора (например, от A1 до D10) и выделить их все полужирным шрифтом. Объекты диапазона могут получать доступ к блокам ячеек следующим образом:

 Диапазон("A1:D10").Шрифт.Жирный = True 

Вы также можете обратиться сразу к нескольким ячейкам/блокам:

 Диапазон("A1:D10,A12:D12,G1").Font.Bold = True 

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

Наконец, объекты Range имеют встроенные методы для выполнения общих операций на листе. Например, вы можете захотеть скопировать некоторые данные из одного места в другое. Вот пример:

 Диапазон ("A1:D10"). Копировать
Диапазон("F1").PasteSpecial xlPasteValues
Диапазон ("F1").PasteSpecial xlPasteFormats 

Это копирует ячейки A1:D10 в буфер обмена, а затем выполняет PasteSpecial(), начиная с ячейки C1 — точно так же, как вы делаете это вручную в Excel. Обратите внимание, что в этом примере показано, как использовать PasteSpecial() для вставки только значений и форматов — здесь есть параметры для всех параметров, которые вы видите в диалоговом окне «Специальная вставка».

Вот пример вставки «Все» на другой лист:

 Диапазон ("A1:D10"). Копировать
Листы("Лист2").Range("A1").PasteSpecial xlPasteAll 

Операторы if

С оператором If вы можете заставить часть кода выполняться только «если» определенное утверждение верно.

Например, вы можете выделить ячейку полужирным шрифтом и покрасить ее в красный цвет, но только «если» значение в ячейке меньше 100.

 Если Диапазон ("A4").  Значение < 100 Тогда
    Диапазон ("A4"). Шрифт. Полужирный = Истина
    Диапазон("A4").Interior.Color = vbRed
Конец, если
 

Правильная структура оператора If выглядит следующим образом (квадратные скобки обозначают необязательные компоненты):

Если <условие> Тогда

[ ElseIf <другое-условие> Then ]

[ Еще ]

Конец, если

Вы можете включить любое количество блоков ElseIf для проверки нескольких условий. Вы также можете добавить блок Else , который запускается только в том случае, если ни одно из других условий в операторе If не выполняется.

Вот еще один пример, основанный на предыдущем, где ячейка форматируется по-разному в зависимости от значения:

 Если Диапазон("A4").Значение < 100 Тогда
    Диапазон ("A4"). Шрифт. Полужирный = Истина
    Диапазон("A4").Interior. Color = vbRed
ElseIf Range("A4").Value < 200 Тогда
    Диапазон ("A4"). Шрифт. Полужирный = Ложь
    Диапазон ("A4"). Интерьер. Цвет = vbYellow
Еще
    Диапазон ("A4"). Шрифт. Полужирный = Ложь
    Диапазон ("A4"). Интерьер. Цвет = vbGreen
Конец, если 

В приведенном выше примере ячейка не выделена жирным шрифтом в блоках ElseIf, где значение не меньше 100.  можно вложить операторы If, чтобы избежать дублирования кода, например:

 Если Диапазон("A4").Значение < 100 Тогда
    Диапазон ("A4"). Шрифт. Полужирный = Истина
    Диапазон("A4").Interior.Color = vbRed
Еще
    Range("A4").Font.Bold = False ' выделение шрифта только один раз
    Если Диапазон("A4").Значение < 200 Тогда
        Диапазон ("A4"). Интерьер. Цвет = vbYellow
    Еще
        Диапазон ("A4"). Интерьер. Цвет = vbGreen
    Конец, если
Конец, если 

Переменные

A Переменная — это часть памяти, используемая для хранения временной информации во время выполнения макроса. Они часто используются в циклах в качестве итераторов или для хранения результата операции, которую вы хотите использовать несколько раз в макросе.

Вот пример переменной и ее использования:

 Sub ExtractSerialNumber()
    Dim strSerial As String ' это объявление переменной
                             'As String' означает, что эта переменная предназначена для хранения текста
    
    ' установка фиктивного серийного номера:
    Диапазон ("A4"). Значение = "серийный номер 804567-88"
    
    ' выделите серийный номер из ячейки A4 и присвойте его переменной
    strSerial = Средний (Диапазон («A4»). Значение, 9)
    
    ' теперь используйте переменную дважды, вместо того, чтобы дважды анализировать серийный номер
    Диапазон ("B4"). Значение = strSerial
    MsgBox улСериал
Конец сабвуфера
 

В этом базовом примере переменная strSerial используется для извлечения серийного номера из ячейки A4 с помощью функции Mid(), а затем используется в двух других местах.

Стандартный способ объявления переменной выглядит следующим образом:

Тусклый как угодно [ Как тип ]

  • любое имя это имя, которое вы решите дать своей переменной
  • тип - тип данных переменной

Часть «[As type ]» может быть опущена — в этом случае переменная объявляется как тип Variant, который может содержать любые данные. Несмотря на то, что типы Variant абсолютно допустимы, их следует избегать, так как они могут привести к неожиданным результатам, если вы не будете осторожны.

Существует правил для имен переменных. Они должны начинаться либо с буквы, либо с символа подчеркивания, не могут содержать пробелов, точек, запятых, кавычек или символов «! @ & $ #».

Вот несколько примеров объявлений переменных:

 Dim strFilename As String ' стиль правильного имени — описательный и использует префикс

Dim i As Long 'плохой стиль имени - приемлем только для некоторых итераторов

Dim SalePrice As Double ' стиль имени в порядке — описательный, но не использует префикс

Dim iCounter ' нормальное имя - не слишком описательное, использует префикс, без типа данных 

Во всех этих примерах используются немного разные схемы именования, но все они допустимы. Неплохо ставить перед именем переменной краткую форму ее типа данных (как в некоторых из этих примеров), так как это делает ваш код более читабельным с первого взгляда.

VBA включает в себя множество основных типов данных . Самые популярные из них включают в себя:

  • Строка (используется для хранения текстовых данных)
  • Long (используется для хранения целых чисел, т. е. без десятичных знаков)
  • Double (используется для хранения чисел с плавающей запятой, т. е. десятичных разрядов)

Полный список встроенных типов данных VBA можно найти здесь: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary

Переменные объекта диапазона

Также можно создавать переменные, которые ссылаются на объекты диапазона. Это полезно, если вы хотите ссылаться на определенный диапазон в своем коде в нескольких местах — таким образом, если вам нужно изменить диапазон, вам нужно изменить его только в одном месте.

Когда вы создаете переменную объекта Range, вы должны «установить» ее на экземпляр Range. Например:

 Dim rMyRange как диапазон
Установите rMyRange = Диапазон («A1: A10; D1: J10») 

Отсутствие оператора «Set» при назначении переменной Range приведет к ошибке.

Петли

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

Для следующего

Блок For-Next представляет собой цикл, который повторяется определенное количество раз. Он использует переменную в качестве итератора , чтобы подсчитать, сколько раз он выполнялся, и эту переменную-итератор можно использовать внутри цикла. Это делает циклы For-Next очень полезными для перебора ячеек или массивов.

Вот пример, который перебирает ячейки в строках с 1 по 100, столбец 1 и устанавливает их значения в значение переменной итератора:

 Тусклый и длинный
Для i = от 1 до 100
    Ячейки (я, 1).  Значение = я
Далее я 

Строка «For i = 1 To 100» означает, что цикл начинается с 1 и заканчивается после 100. Вы можете установить любые начальные и конечные числа; вы также можете использовать переменные для этих чисел.

По умолчанию циклы For-Next подсчитываются до 1. Если вы хотите подсчитывать по другому числу, вы можете написать цикл с явным условием Step :

 Для i = от 5 до 100 Шаг 5 

Этот цикл начнется с 5, затем к «i» будет добавляться 5 каждый раз, когда цикл повторяется (таким образом, «i» будет равно 10 при втором повторении, 15 при третьем и так далее).

Используя Step , вы также можете сделать цикл в обратном порядке:

 Для i = 100 до 1 Шаг -1 

Вы также можете вложить циклов For-Next. Для каждого блока требуется собственная переменная для подсчета, но вы можете использовать эти переменные где угодно. Вот пример того, как это полезно в Excel VBA:

 Dim i As Long, j As Long
Для i = от 1 до 100
    Для j = от 1 до 100
        Ячейки (i, j).  Значение = i * j
    Следующий j
Далее я 

Это позволяет перебирать как строки, так и столбцы.

ПРЕДУПРЕЖДЕНИЕ : хотя это разрешено, вы НИКОГДА не должны изменять переменную итератора внутри блока For-Next, так как он использует этот итератор для отслеживания цикла. Изменение итератора может привести к бесконечному циклу и зависанию макроса. Например:

 Для i = от 1 до 100
    я = 1
Далее я 

В этом цикле «я» никогда не превысит 2, пока не будет сброшено в 1, и цикл будет повторяться вечно.

Для каждого

Блоки For-Each очень похожи на блоки For-Next, за исключением того, что они не используют счетчик для указания количества циклов. Вместо этого блок For-Each берет «коллекцию» объектов (например, диапазон ячеек) и запускается столько раз, сколько объектов в этой коллекции.

Вот пример:

 Dim r As Диапазон
Для каждого r в диапазоне («A15: J54»)
    Если г.Значение > 0 Тогда
        r. Font.Bold = Истина
    Конец, если
Следующий р 

Обратите внимание на использование переменной объекта Range ‘r’. Это переменная итератора, используемая в цикле For-Each — каждый раз в цикле «r» получает ссылку на следующую ячейку в диапазоне.

Преимущество использования циклов For-Each в Excel VBA заключается в том, что вы можете перебирать все ячейки в диапазоне без вложенных циклов. Это может быть удобно, если вам нужно перебрать все ячейки в сложном диапазоне, таком как Range("A1:D12,J13, M1:Y12") .

Одним из недостатков циклов For-Each является то, что вы не можете контролировать порядок обработки ячеек. Хотя на практике Excel будет перебирать ячейки по порядку, теоретически он может обрабатывать ячейки в совершенно случайном порядке. Если вам нужно обрабатывать ячейки в определенном порядке, вместо этого следует использовать циклы For-Next.

Do-Loop

В то время как блоки For-Next используют счетчики, чтобы знать, когда остановиться, блоки Do-Loop выполняются до тех пор, пока не будет выполнено условие. Для этого вы используете предложение Before либо в начале, либо в конце блока, которое проверяет условие и вызывает остановку цикла при выполнении этого условия.

Пример:

 Dim str As String
ул = "Буффало"
Делать до str = "Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo"
    str = str & " " & "Буффало"
Петля
Диапазон ("A1"). Значение = ул 

В этом цикле «Buffalo» объединяется с «str» каждый раз в цикле до тех пор, пока не совпадет с ожидаемым предложением. В этом случае тест выполняется в начале цикла — если «str» уже было ожидаемым предложением (что не так, потому что мы не начали его таким образом, но если бы), цикл даже не запустился. .

Вы можете запустить цикл хотя бы один раз, переместив предложение «До тех пор» в конец, например:

 Делать
    str = str & " " & "Буффало"
Цикл до str = «Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo» 

Вы можете использовать любую версию, которая имеет смысл в вашем макросе.

ПРЕДУПРЕЖДЕНИЕ : вы можете вызвать бесконечный цикл с помощью блока Do-Loop, если условие «До тех пор» никогда не выполняется. Всегда пишите свой код так, чтобы условие «до тех пор» обязательно выполнялось при использовании этого типа цикла.

Что дальше?

После того, как вы усвоили основы, почему бы не попробовать изучить более продвинутые техники? Наш учебник по адресу https://www.automateexcel.com/excel/learn-vba-tutorial/ будет основываться на всем, что вы здесь узнали, и расширит ваши навыки с помощью событий, пользовательских форм, оптимизации кода и многого другого!

 

Как запустить макрос в Excel

Посмотреть видео – Как запустить макрос в Excel

В Excel можно создать макрос, записав его или написав код в редакторе VB.

После создания необходимо запустить макрос.

В этом уроке я покажу вам различные способы запуска макроса в Excel.

Если вы заинтересованы в простом изучении VBA, ознакомьтесь с моим курсом Online Excel VBA Training .

Это руководство охватывает:

Для целей этого руководства предположим, что у нас есть макрос с именем «ColorCell» со ​​следующим кодом:

 Sub ColorCell()
Диапазон("A1").Interior.Color = vbRed
End Sub 

Этот однострочный код заполнит ячейку A1 активного листа красным цветом.

Теперь давайте рассмотрим различные способы запуска этого макроса в Excel.

Запустить макрос, щелкнув фигуру

Один из самых простых способов запустить макрос — создать кнопку на рабочем листе и щелкнуть ее, чтобы выполнить макрос.

Это просто и интуитивно понятно.

Преимущество этого метода в том, что он делает запуск макроса очень простым и интуитивно понятным для всех. Даже если вы делитесь книгой с кем-то, кто не знаком с VBA, он или она может просто нажать кнопку и увидеть, что происходит (даже не зная, что происходит в бэкэнде).

Примерно так, как показано ниже:

Вот шаги для этого:

  • Перейдите на вкладку «Вставка».
  • В группе «Иллюстрации» щелкните значок «Фигуры». Вставьте любую фигуру, которой вы хотите назначить макрос.
  • Щелкните в любом месте рабочего листа. Он вставит объект формы на рабочий лист.
  • Измените размер/формат фигуры по своему усмотрению. В приведенном выше примере я изменил размер, цвет и границу. Вы также можете вставить любой текст в фигуру, просто выделив ее и набрав текст.
  • Щелкните фигуру правой кнопкой мыши и выберите параметр «Назначить макрос». Откроется диалоговое окно «Назначить макрос».
  • В диалоговом окне «Назначить макрос» выберите макрос, который вы хотите назначить фигуре, и нажмите кнопку «ОК».

Вот оно! Теперь фигура будет работать как кнопка, и всякий раз, когда вы нажимаете на нее, она запускает назначенный макрос.

Запуск макроса нажатием кнопки

Хотя форму можно форматировать, кнопка имеет стандартный формат.

Вот как это выглядит:

Вы можете назначить макрос кнопке, а затем запустить макрос, просто нажав эту кнопку.

Вот шаги для назначения макроса кнопке:

  • Перейдите на вкладку «Разработчик» —> «Элементы управления» —> «Вставить» —> «Элементы управления формой» —> «Кнопка».
    • Вкладка «Разработчик» по умолчанию не отображается на ленте, и вам может потребоваться добавить ее перед использованием.
  • Щелкните в любом месте рабочего листа. Как только вы это сделаете, откроется диалоговое окно «Назначить макрос».
  • Выберите макрос, который вы хотите назначить кнопке, и нажмите OK. Это вставит кнопку на лист.

Кнопка, вставляемая по этой методике, стандартная и изменить формат кнопки нельзя (в отличие от фигур, где можно изменить практически все).

Однако вы можете изменить текст кнопки. Для этого щелкните по нему правой кнопкой мыши и выберите «Редактировать текст».

Примечание. Вы также можете назначить макрос другим интерактивным элементам управления, таким как флажок или полоса прокрутки.

Запуск макроса с ленты (вкладка "Разработчик")

Если в книге есть несколько макросов, вы можете увидеть список всех макросов в диалоговом окне "Макросы". Это упрощает запуск нескольких макросов из одного места.

Вот шаги:

  • Перейдите на вкладку «Разработчик» -> «Код» -> «Макросы».
  • В диалоговом окне "Макросы" перечислены все макросы в книге. Выберите тот, который вы хотите запустить.
  • Нажмите «Выполнить».

Запуск макроса из редактора VB

Если вы пишете и тестируете макросы, то вместо вставки кнопок вы можете напрямую запускать макрос из редактора VB.

Вот шаги:

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