Vba excel что это
VBA (Visual Basic for Applications) — язык программирования фирмы Microsoft, интегрированный в приложения MS Office: Word, Excel, Outlook, Access, PowerPoint, FrontPage, Visio, Project, а также в огромное число прикладных программ других производителей.
Основное назначение языка — предоставить пользователям возможность создать надстройку над приложением, позволяющую эффективно решать собственные задачи. Они могут быть как простейшими, сиюминутными, так и представлять собой проекты колоссальной сложности. Согласно изначальной традиции, такие разработки называются макросами (macro) или макропрограммами.
Из сказанного выше можно сделать однозначный вывод о том, что VBA — самый прикладной из всех существующих языков программирования. Ибо он фактически присутствует на большинстве компьютеров в мире, и каждый пользователь может создавать программы, решающие именно его повседневные проблемы.
Однако литература имеется в изобилии только для двух программ: Access и Excel. Если для первой VBA — язык разработки приложений в среде СУБД, то во втором случае причина, скорее всего, лежит в финансовой обеспеченности задач разработки макросов.
При этом наиболее востребованным инструментом для большинства пользователей остается Microsoft Word, о котором многие литературные источники по VBA лишь упоминают. В связи с этим, именно данная программа и будет обсуждаться в первую очередь (изначально — только она). См. также возможные задачи.
Тут же позволю себе напомнить изначальное название языка, которое говорит само за себя: Word Basic.
Основные особенности
- Основное назначение VBA — предоставить пользователю возможность избавиться от выполнения рутинных, повторяющихся действий, описав их в виде программ.
- Каждое приложение MS Office имеет свои особенности работы с информацией, свой набор объектов (объектную модель). Это определяет не только набор команд и функций, но и особенности выполнения некоторых из них в разных приложениях. Однако общий синтаксис и правила работы со свойствами объектов, названия функций и системных переменных остаются едиными, что намного облегчает освоение новых приложений.
- При этом VBA является полноценным современным языком программирования, практически полностью идентичным Visual Basic. В нем отсутствуют лишь графические возможности для рисования.
- Значительно упрощены правила работы с переменными. Пользователь может не заботиться о присвоении типов, хотя при этом замедляется работа, занимается больше памяти и могут остаться невыявленными некоторые ошибки. (Функция отключаема как системно, так и программно.)
- Многие действия, задаваемые в программе пользователем, в принципе не могут быть выполнены через меню: явное расширение наших возможностей.
Использование Справки (Help)
Справка позволяет многократно упростить работу по редактированию и доработке макропрограмм. Наиболее эффективный способ её использования — установить курсор на слове в тексте программы и нажать горячую клавишу F1 . К сожалению, качество подсказки и возможность поиска в ней за несколько последних версий MS Office существенно снизились.
Для версии 2016/2019 при таком вызове происходит обращение на сайт Microsoft. Имеющиеся статьи содержат информацию, зачастую меньшую, чем было в локальной Справке. Перекрестные ссылки присутствуют через раз и ведут не туда, а ссылки «См. также» практически не реализованы.
Настойчиво советую обращаться к исходному описанию на английском языке (переключатель в правом верхнем углу сайта). Это может снять множество вопросов неадекватного автоматизированного перевода.
Запуск макросов
Чтобы запустить макрос на исполнение, он должен быть создан и размещаться доступно, то есть в одном из открытых файлов.
Если была задана кнопка или горячая клавиша, то запустить макрос можно с их помощью. Иначе — через диалог ( Alt+F8 ).
Он же может быть вызван через Ленту: вкладка Вид⇒Макросы⇒Макросы.
Или через Ленту же: вкладка Разработчик⇒Код⇒Макросы, что намного удобнее.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Создание кнопок на Ленте
Хочется сразу сказать, что запуск макросов посредством нажатия кнопки требует кропотливой работы и обдумывания. Хотя это и исправимо, но подумать не помешает.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Размещение макросов
Основные варианты размещения макросов наглядно иллюстрирует приведенный выше рисунок диалога запуска.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Установку новой версии шаблона на пользовательские компьютеры всегда можно автоматизировать использованием командных файлов. Кроме того, VBA также имеет достаточный потенциал для выполнения подобной задачи, но предполагается ряд логических затруднений, который пока обсуждаться не будет.
Шаблон должен сразу сохраняться как Шаблон с поддержкой макросов (*.docm или *.xlsm для Word и Excel, соответственно).
В самом шаблоне макросы помещаются в модули. Во время записи таким модулем будет «New Macro». Но, по мере накопления, с ними становится неудобно работать из-за большого объема. Тогда пользователь может создать свои тематические модули и перенести туда подходящие по смыслу макросы. Например, для обработки таблиц, для устранения ошибок в тексте, учебные, библиотеки подпрограмм и т.д. При этом следует учитывать, что могут перестать работать некоторые абсолютные ссылки на них.
Одним из последующих этапов развития может стать перевод отдельных макросов в скрытый (private) режим и их запуск из интегральных диалогов. Такой подход не только сократит список, но и позволит произвести систематизацию хранения. В моей практике можно привести примеры наборов для: обработки таблиц, литературных списков, спецсимволов, экспорт в HTML и т.д.
Переименование созданного макроса осуществляется очень просто. Макрос всегда начинается одинаково:
Здесь «Macro_Name» — его имя, которое нужно изменить.
Кстати, сохранение ( Ctrl+S ) в среде VBE приводит к сохранению шаблона с отредактированными макросами. При наличии привычки сохранятся, у вас минимизируется вероятность потери результата работы.
Справедливости ради заметим здесь, что любой макрос всегда заканчивается одинаково:
Резюме. Макросы могут храниться (для Word):
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Новогодний сюрприз 2021. В конце 2020 года было обнаружено, что интерфейс Яндекс-почты при сохранении *.docm-файла без предупреждения(!) переименовывает расширение в *.docx. Результатом становится файл, содержащий макросы, но Word их не будет подключать из-за отсутствия легитимного расширения. Текст документа открываться будет без помех. Для решения проблемы нужно изменить расширение, что разумнее сделать именно в процессе сохранения. Спасибо программистам за «заботу» (нет ребенка — нет проблемы).
Встроенные команды
В приведенном выше диалоге можно обнаружить элемент списка «Макросы из Команд Word». Суть заключается в изначальном создании программы: всё, что делается, является командой. Любая команда может быть описана на языке VBA и запущена из него, причем с рядом расширений, недоступных через пользовательский интерфейс. Отсюда вытекает неизбежный вывод: VBA может всё! Человек, умеющий использовать все команды, знает Word на 100%.
Небольшое уточнение по именам команд.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Вопросы и задания
- Записать макрос (построить алгоритм) ввода степени для переменной в математическом выражении.
- В Excel можно получить номер текущей (активной) колонки.
Команда X = ActiveCell.Column присвоит числовой номер колонки переменной X.
Для использования этого значения в указании диапазона, нужно перевести номер в символьное обозначение: для первой колонки — A, для второй — B, для 26-й — AA и т.д. вплоть до 256.
Задание: написать программу, производящую такой перевод.
Примечание. Лучше сделать функцию, принимающую числовой аргумент номера колонки. . - См. также возможные задачи.
Ссылки
-
. (электронная книга для Office 2003). Альтернативный способ :). (от Microsoft). (от Microsoft).
- Фризен И.Г. Программирование на VBA в Word (глава из книги). (English).
- Академия Microsoft: VBA в MS Office 2007. Лекция 12: Практические примеры программирования для MS Word.
Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.
Некоторое время назад меня попросили «помочь с Экселем», а потом и работа подвернулась такая, так что за последние пару месяцев я узнал много полезного, чем и хочу поделиться в догонку к недавней статье.
Предполагается, что вы знаете основы Visual Basic. Я не буду рассказывать, как создавать формы или модули, здесь только примеры кода.
Visual Basic
Опции
Во-первых, в VB массивы могут начинаться с индекса 1, что для многих странно, поэтому в начале модулей можно прописывать:
Так же рекомендуется прописать:
В этом случае интерпретатор потребует заблаговременного объявления всех переменных. Переменные объявлять нужно потому, что:
— VB запомнит их нАпиСание и не будет исправлять во всём коде на последний введенный вариант;
— иногда возникают ошибки с передачей переменных byRef, если они не объявлены (то есть надо или объявить переменную, или приписать в функции/процедуре перед ней byVal).
Ещё одним важным оператором является ON ERROR. Привожу варианты:
Возможности языка
Хотя VB довольно прост, полезно почитать документацию по его синтаксису. Я, например, с удивлением узнал, что можно прописывать сложные усолвия в SELECT'ах (аналог switch):
Ускорение работы макросов
Часто макросы требуют долгого времени выполнения, которое можно значительно сократить. В начале и в конце каждой ресурсоёмкой функции вызвать Prepare и Ended.
Важно понимать, что VBA выполняет все действия так же, как и пользователь. Поэтому для того, чтобы установить параметры страницы, он каждый раз открывает и закрывает окно параметров. У меня выставлялись параметры для 10 листов, это реально не быстро. Поэтому делаем так:
Далее, часто нужно просмотреть различные диапазоны ячеек и что-то с ними сделать. Тут важно не использовать циклы for с перебором индексов, они медленные. Можно использовать встроенные функции Экселя, но удобнее всего такой вариант:
Данный код просматривает указанный диапазон, выбирает в нем «специальные ячейки», в данном случае все, в которых есть формулы (т.е. начинаются со знака равно). Для каждой ячейки смотрится, если она не закрашена, то её надо защитить (см. далее) и покрасить. Такой код работает очень быстро.
Для любых переменных, которым вы собираетесь присвоить книгу, лист, диапазон (ячейку) нужно предварительно объявить как Variant.
Естественно, что если вам нужны однотипные значения в ячейках, нужно использовать автозаполнение, всё равно как «растягивание» ячеек пользователем.
Второй диапазон должен включать первый, а второй необязательный параметр указывает тип автозаполнения.
Загрузка книги и события
При открытии книги каждый раз срабатывает процедура.
В данном случае настройки печати (поля, ориентация) сбрасываются на дефолтные. Можно и другую инициализацию выполнять. Важно, что если макросы отключены, то и не выполнится ничего. Если в Экселе вылезла вверху панелька с предупреждением о макросах и пользователь нажал «Включить», то именно в этот момент выполнится процедура Workbook_open().
Список доступных событий можно посмотреть вверху редактора VB. Например, я делал на событие Change проверку, где лежит ячейка, в которой было изменения, и если это нужный диапазон, то делалась запись в лог со старым и новым значением.
Защита
Во-первых сразу отмечу, что MS Office не исполняет макросы на компьютерах, где он не нашел антивируса, если книга зашифрована. Сталкивался на компьютерах, где антивирус был, но видимо Windows XP об этом не знала.
Ещё антивирус может странным образом мешать работе, вызывать ошибки, не совсем объяснимые. Показал айтишникам, сказали ок, что-то сделали, не знаю.
Итак, нам надо защитить книгу, чтобы ввод был разрешен только в нужные ячейки (формулы и заголовки поменять нельзя). Во-первых, нужно сделать соответствующие ячейки «не защищенными». Для этого делаем одно из:
— выделяем диапазон, формат ячеек, снять галочку «Блокировать ячейку»;
— выводим кнопку «Блокировать ячейку» в быстрый доступ и нажимаем её, очень удобно смотреть на неё чтобы понять, защищена ячейка или же нет;
— а это пригодится, чтобы проверить третий вариант — написать макрос, который снимает защиту с нужных ячеек сам.
Далее нужно защитить лист. На вкладке Рецензирование есть такая кнопка. Окошко просит ввести пароль и установить исключения (что можно будет делать пользователю). К сожалению, список исключений маловат. Самое обидное, что нельзя разрешить сворачивать/разворачивать группы столбцов/строк. Поэтому действуем так, на загрузку книги прописываем:
Знак подчеркивания продолжает логическую строку на следующей физической строке. Итак, здесь мы:
1. Сняли защиту.
2. Включили группировку.
3. Поставили защиту, при этом:
— защита только от юзера, макросы продолжают иметь полный доступ (!), крайне важно;
— разрешили сортировку, фильтрацию и форматирование строк/столбцов (высота/ширина);
— DrawingObject в данном случае снимает защиту с примечаний к ячейкам, может и ещё с чего.
Тут мы сталкиваемся с парой сюрпризов. Во-первых, не все макросы будут работать даже так. Известный баг, ничего не сделаешь. Нельзя вставить строку, например. Приходится снимать и тут же ставить защиту. Если «злоумышленник» в этот момент нажмет ctrl+break, то защита слетит.
Во-вторых, скажем никаким способом нельзя удалять строки (AllowDeletingRows), в которых есть защищенные ячейки, хоть одна. Подробнее вот тут.
Решением (костылем) является добавление кнопки или сочетания клавиш для удаления. Заодно можно проверить, чтобы пользователь не удалил чего не надо. В Workbook_open добавляем:
Теперь процедура будет вызываться при нажатии shift+delete.
Знаю, код некрасивый, простите. Здесь я пытался проверить, что выделена строка, то есть строк там 1, а ячеек не меньше тысячи. Чтобы удалить не то, придется выделить тысячу ячеек начиная не с первого столбца. Далее проверяется имя листа и номера строк. Вместо 50 был расчет последенй строки (ведь их число меняется, если мы их удаляем и добавляем).
Заключение
VBA — весьма глючная вещь, которая позволяет сворачивать горы в MS Office. Многие предприятяи используют модели на Excel годами, и если они сделаны хорошо, то всё работает.
Для изучения VBA подходит он сам, во-первых там хорошая справка. Например, чтобы узнать все варианты что можно разрешить в методе Protect, нажимаем F1, Protect, ввод. И вуаля.
Во-вторых, можно проделать требуемые действия вручную, записав макрос, а потом просмотрев его код. Код будет ужасен (например, при изменении параметров страницы, макрос запишет значения всех параметров и полей, а не только измененного вами), но ответы найдутся. Хотя, например, .AutoFit, который записывается при изменении высоты ячейки по содержимому (двойной клик на границе слева), на самом деле не работает.
Предлагаю знатокам поделиться своим опытом, дать советы в комментариях. Спасибо за внимание, удачных разработок вам.
В данном разделе мы рассмотрим что такое VBA, посколько именно на нем и пишутся макросы.
Что такое VBA?
VBA - язык (расшифровывается как Visual Basic for Application) был разработан компанией Microsoft. Данный язык не является самостоятельным, а предназначен для автоматизации процессов в пакете MS Office. VBA широко используется в Excel, а также в Access, Word и других программах пакета.
Чтобы работать с VBA кодом, нам нужен редактор, который уже установлен по умолчанию. Вы можете открыть его, нажав комбинацию клавиш " ALT + F11 ".
Объекты (Objects)
Давайте разберем, что же такое объект. Объект - это элемент, структурная частица Excel, а именно: книга, лист, диапазон, ячейка. Данные объекты имеют иерархию, т.е. подчиняются друг другу. Схематично структуру иерархии Excel можно изобразить следующим образом:
Главный объект это Application, что соответствует самой программе Excel. Далее следует Workbooks (книга), Worksheets (лист), Range (диапазон, или отдельная ячейка). Например, чтобы обратиться к ячейке "A1" на листе нам нужно будет прописать следующий путь с учетом иерархии:
Application.Workbooks("Архив").Worksheets("Аркуш1").Range("A1").
Таким образом, мы научились обращаться до наименьшего объекта в Excel - ячейки.
Коллекции (Collections)
- ChartObjects (элемент коллекции объекта ChartObject)
- Range
- PageSetup
- PivotTables (элемент коллекции объекта PivotTable).
Свойства (Properties)
Каждый объект имеет свойства . Например, объект Range имеет свойство Value или Formula.
Worksheets(“Sheet1”).Range(“A1”).Value або Worksheets(“Sheet1”).Range(“A1”).Formula
В данном примере, свойство отображает значение, которое введено в ячейку или введенную формулу.
Также, через свойство Formula можно не только получить формулу, но и записать ее:
Range(“B12”).Formula = “=2+6*100” - вписываем формулу =2+6*100 в ячейку B12.
Методи (Methods)
Теперь давайте рассмотрим, каким образом мы можем управлять содержимым диапазона или ячейки. Для этого в VBA существуют, так-называемые методы (команды "что сделать"). При написании кода методы отделяются от объекта точкой, например:
Range("A1").Select или Cells(1, 1).Select
Данный метод указывает выбрать (Select) ячейку "A1".
Далее, давайте, удалим значение в данной ячейке. Для этого напишем следующий код:
Selection.ClearContents
Здесь программа "берет" то, что мы выделили (Selection) и удаляет его содержимое (ClearContents ).
Всем нам приходится - кому реже, кому чаще - повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую "рутинную составляющую" - одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.
Макрос - это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых нужных нам действий, которые нам не хочется выполнять вручную.
Способ 1. Создание макросов в редакторе Visual Basic
Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно - редактор программ на VBA, встроенный в Microsoft Excel.
- В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис - Макрос - Редактор Visual Basic(Toos - Macro - Visual Basic Editor).
- В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer) . Выбираем Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer) . Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic(Visual Basic Editor)
:
К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:
Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:
-
Обычные модули - используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert - Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:
Обычный макрос, введенный в стандартный модуль выглядит примерно так:
Давайте разберем приведенный выше в качестве примера макрос Zamena:
С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно.
Способ 2. Запись макросов макрорекордером
Макрорекордер - это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:
- Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу - запись останавливается.
- Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
- Если во время записи макроса макрорекордером вы ошиблись - ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) - во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.
Чтобы включить запись необходимо:
- в Excel 2003 и старше - выбрать в меню Сервис - Макрос - Начать запись(Tools - Macro - Record New Macro)
- в Excel 2007 и новее - нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)
Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:
- Имя макроса - подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш - будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис - Макрос - Макросы - Выполнить(Tools - Macro - Macros - Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
- Сохранить в. - здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
- Эта книга - макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
- Новая книга - макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
- Личная книга макросов - это специальная книга Excel с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.
После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording) .
Запуск и редактирование макросов
Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или - в старых версиях Excel - через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) :
- Любой выделенный в списке макрос можно запустить кнопкой Выполнить(Run) .
- Кнопка Параметры(Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
- Кнопка Изменить(Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:
Кнопка на панели инструментов в Excel 2003 и старше
Откройте меню Сервис - Настройка (Tools - Customize) и перейдите на вкладку Команды (Commands) . В категории Макросы легко найти веселый желтый "колобок" - Настраиваемую кнопку (Custom button) :
Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и новее
Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar) :
Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:
Кнопка на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:
- В Excel 2003 и старше - откройте панель инструментов Формы через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms)
- В Excel 2007 и новее - откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)
Выберите объект Кнопка (Button) :
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.
Создание пользовательских функций на VBA
Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).
Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции:
Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined) :
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
Первая версия Excel появилась в 1985 году. С этого времени ПО продолжать развиваться, в результате чего появился vba excel. Что это такое и для чего можно использовать, стоит рассмотреть более подробно.
Что это такое
При создании программы Excel использовался специальный технический язык Visual Basic for Application. Первоначально его устанавливают в процессор Microsoft. Технические специалисты отмечают, что данный язык легко изучить и использовать в работе.
Однако существует нюанс, о котором должен знать каждый пользователь: не все версии могут быть совместимы. Это связано с тем, что функционально VBA связана с новой версией продукта, при этом в старых программах таких возможностей нет. Кроме того, код открыт для посторонних пользователей, поэтому его легко изменить. Однако посредством IBM Lotus Symphony можно задать комбинацию пароля, чтобы просматривать документы смог только один пользователь.
Объекты, коллекции, свойства и методы
Для пользователей, которые планируют в будущем использовать VBA, необходимо разобраться с ключевыми понятиями и узнать, что такое объект. Обратившись к программе Excel, здесь в данном случае объектами являются:
Все объекты создают определенную иерархию, в которой подчиняются друг другу. Имеющийся Application должен соответствовать продукту Excel. Так, например, чтобы использовать определенную ячейку, пользователь должен задать определенный путь к ней.
Коллекция – это группа объектов, принадлежащих к тому же классу с форматом записи ChartObjects. Отдельные составляющие также принадлежат категории объектов.
Еще одно понятие, с которым важно ознакомиться, это «Свойства». Каждый объект имеет обязательную характеристику. Для Range, как правило, Value и Formula.
Методы – это задаваемые команды, которые требуется осуществить пользователю. Если требуется заполнить команду в форме VBA, то в обязательном порядке нужно проставлять точки, отделяя объект. В качестве примера: Cells (1,2).Select. Данная команда предполагает, что требуется выбрать ячейку под номером 1.2. Если значение было задано неверно или потребуется удалить все содержимое ячейки, то необходимо задать команду Selection.ClearContents.
Как начать этим пользоваться
Для начала необходимо создать файл в формате Excel и сохранить на рабочем столе. Важно, чтобы файл поддерживал макросы. Далее нужно перейти к VB. Для этого потребуется зажать комбинацию из клавишей «Alt+F1». Потом требуется следовать инструкции:
- Рядом с Excel в верхней части можно найти специальное меню;
- Из перечисленных функций выбрать «Mudule»;
- Сохранить и нажать на изображение с надписью «floppy disk»;
- Вписываем код.
Формат кодировки должен выглядеть в таком формате: Sub program-‘код-End Sub.
Внимание: строка, в которой должен прописываться код будет выделена зеленым цветом. Перед тем, как прописывать кодировку, крайне важно поставить апостроф. Он означает, что после шифра должен проставляться определенный комментарий.
Это все, что понадобиться, чтобы сформировать инструмент VBA. Для пользователей, которые имеют представление о том, как использовать Visual Basic, весь процесс займет минимум времени. Но процесс также не предполагает сложностей для тех пользователей, которые ранее не сталкивались с решением подобной задачи.
Макросы в Excel
Макросом называют специальный код, который записывается на специальном языке VBA. Их можно создавать в ручном или автоматическом режиме. Для этого потребуется использовать специальный макроредактор.
Программа, которая записывает каждое действие, произведенное в программе Excel, преобразует их в специальный язык VBA. Код, который создается посредством макрорекодера, легко поддается редактированию и удобен в использовании. Важно отметить, что макрос можно использовать неограниченное количество раз. Даже если пользователь не знает, каким образом нужно обращаться с VBA, он может максимально автоматизировать весь процесс.
Чтобы самостоятельно создать макрос, рекомендуется использовать следующую инструкцию:
- Кликнуть правой кнопкой мыши на созданную ленту и жать на функцию настройки. С его помощью можно открыть параметры диалогового окна:
- В открывшемся окне появится параметр настройки ленты. В правой части находятся основные функции, где потребуется поставить галочку напротив разработчика:
- Подтвердить действие, нажимая кнопку «ОК».
Если все действия выполнены в правильной последовательности, в основной меню должно появиться дополнительное меню Разработчик, как указано на скриншоте:
Чтобы воспользоваться расширенными функциями таблицы Excel, стоит попробовать самостоятельно записать макрос. Он будет самостоятельно выбирать ячейку и формировать в ней заданный текст. Для этого потребуется сделать следующие шаги:
- Перейти в созданную вкладку разработчика;
- В меню кода выбрать функцию записи. Должно открыться отдельное окно
- В окне записи потребуется задать имя для будущего макроса. Однако важно отметить, что важно выполнить несколько правил, чтобы правильно задать имя: нельзя использовать пробелы. Поэтому лучше задавать слитное название, даже если оно состоит из двух слов. Также разрешается использовать нижний дефис.
- Если возникает необходимость, то можно задать комбинацию из клавиш. В таком случае нужно одновременно зажать следующее сочетание: «Ctrl+Shift+N». Важно запомнить, что данная комбинация при использовании способна отменить абсолютно любые заданные действия посредством горячих клавиш. Если ранее для автоматического сохранения использовалось сочетание «Ctrl+S», то более для этой функции его нельзя использовать.
- Перед тем, как сохранить документ, нужно проверить, правильно ли задана опция. Это необходимо для того, чтобы удостовериться в том, что макрос является составляющей выбранной книги. Он будет присутствовать даже при автоматическом сохранении или если потребуется с кем-то поделиться файлом.
- Как дополнение можно придумать описание к файлу. Чаще всего это требуется, если пользователь планирует создать несколько макросов подряд, чтобы в будущем не запутаться, какой из них за что отвечает;
- Остается нажать «OK». После этого макрос начнет автоматически записывать информацию в книге. Если нужно остановить запись, то кликаем по соответствующей кнопке рядом с меню разработчика;
- Выбираем другую ячейку, например А2;
- Вводим любой текст и нажимает кнопу «Enter»
- Далее приостанавливаем запись.
На этом все действия выполнены и остается использовать макрос при необходимости. Стоит отметить, что с его помощью каждый пользователь сможет понять, каким образом устроен макрорекодер.
Чтобы ознакомиться с полученными результатами, достаточно перейти в VB в Excel:
- Открыть вкладку разработчика
- В меню кодировки открыть Visual Basic.
Чтобы перейти к кодировке VBA или его редактор, можно использовать комбинацию из клавиш Alt и F11. Для ознакомления, каким образом выглядит сам редактор, представлен следующий скриншот:
Меню Visual Basic
Когда записывается новый макрос, должны происходить следующие изменение:
- Появление нового модуля
- Появление набранного названия
- Добавляется новая функция.
Чтобы показалось окно ввода, остается дважды кликнуть на модуль, чтобы появилась следующая запись, как показано на скриншоте:
Важно принять к сведению, что самостоятельно записанный код эффективен в определенных областях применения (финансовой или математической). Кроме того, зачастую макрорекодер может к имеющемуся инструментарию предлагать совершенно новые и ненужные функции.
Функции VBA
На примере инструкций, которые были приведены ранее, можно сделать вывод о том, что использование VBA и макросов не предполагает больших сложностей. Общее количество функций, которые были созданы специально для программирования на языке VBA, составляет 160 возможностей. Все функции подразделяются на несколько групп:
Решение задачи с использованием программирования на VBA
Чтобы просчитать возможные отклонения, требуется ввести обозначения и получить заданную формулу. Для того, чтобы просчитать процентное обозначение потребуется использовать следующую формулу: (F-P)разделить на P*100, суммарное значение должно получиться при действии (F-P). Полученные результаты рекомендуется сразу вводить в таблицу.
Чтобы сформировать в надлежащем виде прогноз, нужно применить следующую формулу: ItogP=ItogP + P, ItogF=ItogF+ F. Для просчета отклонений требуется использовать (ItogF – ItogP) / ItogP * 100. Как только все действия будут выполнены, значения вносятся в ячейки, а значит присваивать переменные нет необходимости.
Чтобы осуществить запуск, в первую очередь требуется сохранить созданную книгу. Также стоит обращать внимание и на другие условия. Так, например, добавлять строки придется каждый раз после введения новых обозначений в таблице.
Если требуется создать таблицу для отчетности, то по данной функции достаточно кликнуть все раз. Как только работа подойдет к завершению, нужно нажать на закончить, а затем переключиться в соответствующее окно программы Excel.
Заключение
Выше были изучены все аспекты, каким образом можно использовать макросы, для чего нужен VBA в Excel и каким образом его применять. Стоит отметить, что благодаря простым инструкциям, научиться этим действиям сможет любой начинающий пользователь, который ранее не имел возможность изучать Visual Basic. Подобные возможности помогают в организации финансовой отчетности и проведения математических функций.
Читайте также: