Как написать макрос в Excel на языке программирования VBA
В Эксель создать макросы можно вручную или автоматически. Последний вариант предполагает запись действий, которые мы выполняем в программе, для их дальнейшего повтора. Это достаточно простой способ, пользователь не должен обладать какими-то навыками кодирования и т.д. Однако, в связи с этим, применить его можно не всегда.
Чтобы создавать макросы вручную, нужно уметь программировать. Но именно такой способ иногда является единственным или одним из немногих вариантов эффективного решения поставленной задачи.
Решаем счётные задачи с помощью Excel VBA
- Выберите любую ячейку (кроме A1).
- Перейдите на вкладку “Разработчик”.
- В группе “Код” нажмите кнопку “Макросы”.
- В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
- Нажмите кнопку “Выполнить”.
Функция довольно удобная, не есть у нее один большой недостаток ячейки для сцепки нужно указывать по одной, выделение диапазона не работает или работает некорректно. Читать далее «Как соединить текст из нескольких ячеек Excel не потеряв информацию.»
Знакомство с редактором Visual Basic в Excel
Чтобы попасть в редактор кода, кликните на вкладке разработчика в области «Код» по кнопке «Visual Basic».
После этого на экране появится новое окно редактора VBA. Рассмотрим ниже некоторые его элементы, которые могут понадобиться в самом начале.
№1 на изображении. Кнопка сохранить. Сохраняет текущую книгу Excel. Необходимо быть внимательнее при работе с несколькими книгами, так как текущей считается та, которая выделена в окне проектов (№3 на изображении).
№2 на изображении. Кнопки запуска, остановки и прерывания выполнения кода. Во время запуска начинает выполняться код той процедуры, на которой размещен курсор. Данные кнопки дублируются вкладкой «Run» основного меню редактора.
№3 на изображении. Окно управления проектами VBA открытых книг (Project Explorer) и кнопка, отображающая это окно.
№4 на изображении. Кнопка, отображающая окно свойств объектов (Properties Window), выбранных в окне №3, и элементов пользовательских форм (работа с объектами, их свойствами и методами будет рассмотрена в отдельной статье этой категории).
№5 на изображении. Кнопка вызова окна объектов (Object Browser). В нем описаны все доступные для работы объекты, их свойства и методы.
Кнопки №3, №4 и №5 так же доступны на вкладке «View» главного меню редактора. Там же можно вызвать другие полезные для работы окна, которые не будут рассмотрены в этом материале.
Данная процедура выводит на экран диалоговое окно с сообщением «Привет пользователь!». Протестируйте ее работу, нажав кнопку Rub Sub (№2 на изображении) или вызвав как обычный макрос.
Любая процедура начинается со строки объявления, состоящей из оператора Sub (сокращение от Subprogram), после которого следует имя подпрограммы. За именем следует перечень аргументов, заключенный в скобки.
Для имени действуют некоторые ограничения: оно должно начинаться с буквы и не должно содержать пробелы и большинство спецсимволов.
В этом примере аргументы не используются, поэтому указываются пустые скобки.
Следующая строка выводит диалог на экран с помощью функции MsgBox. Сообщение, которое в нее передается должно содержать текст, поэтому оно заключается в двойные кавычки.
Последняя строка содержит оператор End с последующим ключевым словом Sub и сообщает о завершении процедуры.
Excel примеры vba — все про Ексель
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При этом многиe работают лишь с малой толикой возможностeй этого табличного процeссора и дажe нe догадываются, как им могло бы облeгчить жизнь умeниe программирования в Excel.
Добавление кнопки или стрелки перехода вверх(в начало) на листе Excel. Макрос.
Иногда для листов с большим объемом позиций просто необходима плавающая кнопка или стрелка листающая строки вверх. Ведь не каждый пользователь знает о сочетаниях горячих клавиш ctrl+↑ и ctrl+home. Читать далее «Добавление кнопки или стрелки перехода вверх(в начало) на листе Excel. Макрос.»
Похожее:
Рубрика Макросы и VBA. VBA (Visual Basic for Applications)
Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.
Как начать
Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».
Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:
- в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
- выбирают команду Mudule;
- сохраняют, нажав на иконку с изображением floppy disk;
- пишут, скажем так, набросок кода.
Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.
Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.
Основы программирования на Visual Basic for Application (VBA) в Excel
- разработать его шаблонную часть посредством табличного процессора «Эксель»;
- составить программу VBA, которая будет запрашивать исходные данные для ее заполнения, осуществлять необходимые расчеты и заполнять ими соответствующие ячейки шаблона.
В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.
Объекты, коллекции, свойства и методы
Именно с этими понятиями нужно разобраться тем, кто собирается работать в среде VBA. Прежде всего необходимо понять, что такое объект. В Excel в этом качестве выступают лист, книга, ячейка и диапазон. Данные объекты обладают специальной иерархией, т.е. подчиняются друг другу.
Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.
Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.
Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.
Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.
Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.
Графики VBA.
- в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
- выбирают команду Mudule;
- сохраняют, нажав на иконку с изображением floppy disk;
- пишут, скажем так, набросок кода.
Как я говорил ранее вы можете вызывать процедуру макроса горячей комбинацией клавиш, но это очень утомительно помнить какую комбинацию кому назначена, поэтому лучше всего будет создание кнопки для запуска макроса. Кнопки создать, возможно, нескольких типов, а именно:
Решаем счётные задачи с помощью Excel VBA
Изучение языка — тема отдельная, хотя он совсем несложен. В этой заметке я покажу лишь самые очевидные вещи — как ввести данные и вывести результаты работы двумя основными способами — с помощью окон диалога и непосредственно в ячейки рабочего листа Excel.
1. Включите настройку Кнопка Office — Параметры Excel (или Word) — Основные — «Показывать вкладку Разработчик на ленте». В последних версиях офиса настройка может называться иначе, но она там есть
2. На вкладке Разработчик нажмите кнопку Безопасность макросов и разрешите выполнение макросов:
параметры макросов
Когда цикл разработки окончен, лучше вернуть настройку на место, чтобы не открыть вирусный документ, полученный откуда-нибудь со стороны.
3. Нажмите вкладку Разработчик – Макросы, дайте новой программе имя и нажмите кнопку Создать:
создание макроса
Откроется редактор Visual Basic, в котором можно писать, отлаживать, выполнять и сохранять программы.
На скрине ниже показана программа, позволяющая вычислить, сколько процентов составляет значение A от B.
пример программы
Вот листинг почти программки такого же типа, только ещё проще.
Теперь можно нажать зелёный треугольничек или клавишу F5 в редакторе VBA, чтобы запустить программу. Если доступно несколько программ или текстовый курсор не установлен внутри программы, компьютер может попросить выбрать нужную по имени:
запуск программы из редактора Visual Basic
Чтобы макросы не пропали, при первом сохранении рабочей книги нужно выбрать пункт меню «Сохранить как» и указать в списке «Тип файла» значение «Книга Excel с поддержкой макросов (*.xlsm)».
Обычно мы хотим запускать программу не из Visual Basic, а прямо из документа, например, нажимая кнопку.
Чтобы встроить кнопку непосредственно в документ Word или Excel, действуем так:
1. На вкладке разработчика нажмём кнопку «Режим конструктора» и выберем нужный элемент управления, например, кнопку:
выбор инструмента «Кнопка»
2. Потом курсором-крестиком «нарисуем» кнопку в документе и нажмём «Создать» в окне «Назначить макрос объекту», чтобы кнопке была назначена пустая процедура-обработчик её основного события (то есть, нажатия):
добавление кнопки на лист
3. После этого можно запрограммировать процедуру обработки нажатия нашей кнопки.
Обращаться к ячейкам Excel из программы VBA тоже очень легко, вот несколько примеров:
Попробуйте скопировать в VBA и выполнить эти 2 несложных программы, и начальный опыт программирования в нём у Вас появится
Первая программа может быть назначена кнопке и позволяет ввести из столбца A текущего рабочего листа столько числовых значений, сколько их там набрано, но не больше 100.
Полученные значения заносятся в массив A, заполнение прекращается по достижении пустой ячейки, ячейки, заполненной не числом или когда набрано 100 элементов.
Затем от введённых чисел рассчитывается сумма и записывается в ячейку B6.
Вторая программа предполагает, что в ячейках B12 и B13 рабочего листа записаны 2 даты. Это могут быть строки, интерпретируемые Вашим Excel как даты, например, 01.01.2001 или даты, полученные формулой, скажем, =СЕГОДНЯ()
По нажатию кнопки даты проверяются, если двух дат не найдено, выводится сообщение и программа завершается.
В противном случае мы вычисляем и выводим в ячейку B16 количество дней между датами, а в C12 и C13 — дни недели по русски. Добавьте небольшое оформление и получите простейший калькулятор дат:
пример «интерфейса» для макроса VBA
Макрос слияния (сцепки) текста из ячеек в «Excel» без потери данных.
Рассмотрим программу, которая создаст столбец. В каждой его ячейке будут записаны квадраты номера соответствующей строки. Использование конструкции For позволит записать ее очень коротко, без использования счетчика.
# 3 — Код для просмотра графиков
Например, как мы просматриваем листы, чтобы изменить имя или вставить значения, скрыть и показать их. Точно так же для просмотра диаграмм нам нужно использовать свойство объекта диаграммы.
Приведенный ниже код будет перебирать все диаграммы на листе.
Что такое VBA?
В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.