Что такое vba в excel? (от базового до продвинутого)
Что такое ВБА?
VBA (Visual Basic для приложений) — это язык программирования, позволяющий автоматизировать практически все в Excel. С помощью VBA вы можете обращаться к объектам Excel и использовать связанные с ними свойства, методы и события. Например, вы можете создать сводную таблицу, вставить диаграмму и отобразить окно сообщения пользователю с помощью макроса.
Самое безумное:
Все задачи, которые вы выполняете вручную за считанные минуты, VBA может выполнить за секунды, одним щелчком мыши и с той же точностью. Вы даже можете писать коды VBA, которые будут запускаться автоматически при открытии документа, книги или даже в определенное время.
Позвольте мне показать вам конкретный пример:
Каждое утро, когда я иду в офис, первое, что мне нужно сделать, — это создать сводную таблицу продаж за текущий месяц и представить ее своему начальнику. Это включает в себя одни и те же шаги каждый день. Но когда я понял, что могу использовать VBA для создания сводной таблицы и вставки ее одним щелчком мыши, это сэкономило мне 5 минут в день.

Вот как работает VBA
VBA — это объектно-ориентированный язык, и как объектно-ориентированный язык, в VBA мы структурируем наши коды таким образом, что мы используем объекты, а затем определяем их свойства.
Проще говоря, мы сначала определяем объект, а затем действие, которое хотим выполнить. В VBA существуют объекты, коллекции, методы и свойства, которые вы можете использовать для написания кода.
>Не пропустите это<
Допустим, вы хотите попросить кого-нибудь открыть коробку. Слова, которые вы бы использовали, были бы: «Открой коробку». Это простой английский, не так ли? Но когда дело доходит до VBA и написания макроса, это будет:
Box.Open
Как видите, приведенный выше код начинается с поля, которое является нашим объектом, затем мы использовали для этого метод «Открыть». Давайте уточним, скажем, хотите ли вы открыть коробку, окрашенную в КРАСНЫЙ цвет. И для этого код будет:
Boxes(“Red”).Open
В приведенном выше коде box — это коллекция, а open — метод. Если у вас несколько ящиков, мы определяем здесь конкретный ящик. Вот еще один способ:
Box(“Red”).Unlock = True
В приведенном выше коде поля снова представляют собой коллекцию, а свойство Unlock имеет значение TRUE.
Для чего используется VBA в Excel?
В Excel вы можете использовать VBA для разных целей. Вот некоторые:
- Ввод данных : вы можете вводить данные в ячейку, диапазон ячеек. Вы также можете копировать и вставлять данные из одного раздела в другой.
- Автоматизация задач . Вы можете автоматизировать задачи, которые требуют от вас много времени. Лучший пример, который я могу привести, — это использование макроса для создания сводной таблицы.
- Создайте пользовательскую функцию Excel . С помощью VBA вы также можете создать пользовательскую функцию и использовать ее на листе.
- Создание надстроек . В Excel вы можете конвертировать свои коды VBA в надстройки и делиться ими с другими.
- Интеграция с другими приложениями Microsoft . Вы также можете интегрировать Excel с другими приложениями Microsoft. Например, вы можете ввести данные в текстовый файл.
Основы программирования Excel
1. Процедура
Процедура в VBA — это набор кодов или одна строка кода, выполняющая определенное действие.
- SUB : процедура Sub может выполнять действия, но не возвращает значение (но вы можете использовать объект для получения этого значения).
- Функция : Используя процедуру Function, вы создаете свою функцию, которую можно использовать в электронной таблице или других процедурах SUB и FUNCTION (см.: Функция VBA ).
2. Переменные и константы
Вам нужны переменные и константы, чтобы многократно использовать значения в коде.
- Переменная : переменная может хранить значение, у нее есть имя, вы должны определить ее тип данных и можете изменить хранимое в ней значение. Как следует из названия, переменная не имеет фиксированного значения. Это как ящик для хранения, хранящийся в системе.
- Константа : константа также может хранить значение, но вы не можете изменить это значение во время выполнения кода.
3. Типы данных
Вы должны объявить тип данных для ПЕРЕМЕННЫХ и КОНСТАНТ.

Когда вы указываете тип данных для переменной или константы, это обеспечивает достоверность ваших данных. Если вы опустите тип данных, VBA применит к вашей переменной тип данных Variant (это наиболее гибкий вариант), VBA не угадает, каким должен быть тип данных.
Совет: Явный параметр VBA
4. Объекты, свойства и методы
Visual Basic для приложений — это объектно-ориентированный язык, и чтобы максимально эффективно использовать его возможности; вам нужно понимать объекты Excel.
Книга, которую вы используете в Excel, содержит различные объекты, и у всех этих объектов есть несколько свойств, к которым вы можете получить доступ, и методов, которые вы можете использовать.
5. События
Каждый раз, когда вы что-то делаете в Excel, это событие: ввод значения в ячейку, вставка нового листа или диаграммы. Ниже представлена классификация событий по объектам:
- События приложения: эти события связаны с самим приложением Excel.
- События книги: эти события связаны с действиями, которые происходят в книге.
- События рабочего листа: эти события связаны с действием, которое происходит на листе.
- События диаграммы. Эти события связаны с листами диаграмм (которые отличаются от рабочих листов).
- События пользовательской формы: эти события связаны с действием, которое происходит с пользовательской формой.
- События OnTime. События OnTime — это события, которые могут запускать код в определенное время.
- События OnKey. События OnKey — это события, которые могут запускать код при нажатии определенной клавиши.
6.Объем
Объект диапазона — это наиболее распространенный и популярный способ ссылки на диапазон в кодах VBA. Вам нужно указать адрес ячейки, позвольте мне рассказать вам синтаксис.
Worksheets(“Sheet1”).Range(“A1”)
7. Условия
Как и в любом другом языке программирования, в VBA можно писать коды для проверки условий. Это позволяет сделать это двумя разными способами.
- IF THEN ELSE : это оператор IF, который вы можете использовать для проверки условия, а затем выполнить строку кода, если это условие истинно. Вы также можете написать условия вложения с помощью
- SELECT CASE : в случае выбора вы можете указать условие, а затем различные случаи результатов теста для выполнения разных строк кода. Он немного более структурирован, чем оператор IF.
8. Циклы VBA
Вы можете писать коды, которые могут повторять и повторно повторять действие в VBA, и есть несколько способов написать такой код.
- Для следующего : лучше всего использовать функцию «Для следующего» в том случае, если вы хотите повторить набор действий фиксированное количество раз.
- For Each Next : идеально подходит для перебора группы объектов из коллекции объектов.
- Цикл Do While. Простая идея цикла Do While заключается в выполнении действия, пока условие истинно.
- Цикл Do Until: В цикле Do Until VBA выполняет цикл и продолжает его выполнять, если условие имеет значение FALSE.
9. Поле ввода и окно сообщения.
- Поле ввода : Поле ввода — это функция, которая отображает пользователю поле ввода и собирает ответ.
- Окно сообщений : окно сообщений позволяет отображать сообщение пользователю, но у вас есть возможность добавить кнопки в окно сообщения, чтобы получить ответ от пользователя.
10. Ошибки
Excel не везет с ошибками в программировании, и с ними приходится бороться во что бы то ни стало.
- Синтаксические ошибки . Это похоже на опечатки, которые вы делаете при написании кода, но VBA может помочь вам, сообщив об этих ошибках.
- Ошибки компиляции: они возникают, когда вы пишете код для выполнения действия, но это действие является недопустимым.
- Ошибки выполнения : во время выполнения кода возникает ошибка RUNTIME. Он останавливает код и отображает диалоговое окно с ошибкой.
- Логическая ошибка : это не ошибка, а ошибка при написании кода, которая иногда может доставлять вам проблемы при ее поиске и исправлении.
Напишите макрос (программу VBA) в Excel.
Я твердо убежден, что изначально, когда кто-то начинает программировать в Excel, ОН/ОНА должен писать все больше и больше кодов с нуля. Чем больше кодов вы пишете с нуля, тем лучше понимаете, как работает VBA.
Но вам следует начать с написания простых кодов, а не переходить к сложным кодам. Вот ПОЧЕМУ я не хочу, чтобы вы сейчас думали о чем-то сложном.
Вы даже можете написать макрокод для создания сводной таблицы, но сейчас я не хочу, чтобы вы заходили так далеко. Давайте подумаем о том, какое действие вы хотите выполнить в своей электронной таблице и можете написать для него код.
- Перейдите на вкладку «Разработчик» и откройте редактор Visual Basic , нажав кнопку «Visual Basic».
- После этого вставьте новый модуль из «Окна проекта» (щелкните правой кнопкой мыши ➢ Вставить ➢ Модуль).
- После этого заходим в окно кода и создаем макрос с названием «Enter Done» (создаем SUB-процедуру), как у меня ниже.
- После этого вам нужно написать код, о котором мы только что говорили выше. Подождите секунду и подумайте так: вам нужно указать ячейку, в которую вы хотите вставить значение, а затем значение, которое вы хотите ввести.
- Введите ссылку на ячейку, и для этого вам нужно использовать объект RANGE и указать там адрес ячейки, как показано ниже:
- После этого введите точку, и в тот момент, когда вы добавите точку, у вас появится список свойств, которые вы можете установить, и действий, которые вы можете выполнять с диапазоном.
- Отсюда вам нужно выбрать свойство «Значение» и установить текст, который вы хотите вставить в ячейку «A1», и при этом ваш код будет выглядеть примерно так, как показано ниже.
- Наконец, над строкой кода введите текст («этот код вводит значение «Готово» в ячейку A5). Это комментарий VBA , который вы можете вставить, чтобы определить написанную вами строку кода.
Sub Enter_Done() 'this code enters the value “Done” in the cell A5 Range("A1").Value = "Done" End Sub
Давайте это поймем…
Вы можете разделить этот код на две разные части.

- В ПЕРВОЙ части мы указали адрес ячейки , используя объект RANGE. А чтобы обратиться к ячейке с использованием объекта диапазона, вам необходимо заключить адрес ячейки в двойные кавычки (вы также можете использовать квадратные скобки).
- Во ВТОРОЙ части мы указали значение для ввода в ячейку. Что вы сделали, так это установили свойство значения для ячейки A5, используя «.Value». После этого следующее, что вы указываете, — это значение относительно свойства value . Всякий раз, когда вы определяете значение (если оно текстовое), вы должны заключить это значение в двойные кавычки.
Лучший способ изучить VBA
Здесь я перечислил некоторые из самых замечательных руководств (не в какой-то определенной последовательности), которые помогут вам освоить VBA в кратчайшие сроки.
- 100 лучших полезных примеров макрокода Excel [VBA]
- Как создать пользовательскую функцию [UDF] в Excel с помощью VBA
- Вопросы для собеседования по VBA
1. Начало работы с VBA
- Добавьте вкладку «Разработчик»
- Редактор Visual Basic
- Добавить комментарий в VBA
- Добавьте разрыв строки в код VBA
- Добавить новую строку (возврат каретки)
- Запуск макроса в Excel
- Личная книга макросов (personal.xlsb)
- Запись макроса в Excel
- Подоператор вывода VBA
- Непосредственное окно VBA (Debug.Print)
- Модуль VBA
- Окно сообщений VBA (MsgBox)
- Объекты VBA
- VBA с декларацией
2. Работа с книгами в VBA
- Понимание объекта рабочей книги VBA
- Скопируйте файл Excel (книгу) с помощью VBA
- Активировать книгу (файл Excel)
- Закройте книгу (файл Excel)
- Объединение книг (файлов Excel)
- Создайте новую книгу (файл Excel)
- Удалить книгу (файл Excel)
- Открыть книгу (файл Excel)
- Защитить/снять защиту книги (файл Excel)
- Переименование книги (файл Excel)
- Сохраните книгу (файл Excel)
- ThisWorkbook (текущий файл Excel)
3. Работа с электронными таблицами
- Работа с электронной таблицей Excel в VBA
- Как ОЧИСТИТЬ весь лист с помощью VBA в Excel
- Как скопировать и переместить лист в Excel с помощью VBA
- Как СЧИТАТЬ листы с помощью VBA в Excel
- Как УДАЛИТЬ ЛИСТ с помощью VBA в Excel
- Как скрыть и показать лист с помощью VBA в Excel
- Как ЗАЩИТИТЬ и СНЯТЬ ЗАЩИТУ листа с помощью VBA в Excel
- Как переименовать лист с помощью VBA в Excel
- Как написать код VBA для создания нового листа в Excel (макрос)
- Как активировать лист с помощью VBA
4. Работа с диапазоном и ячейками
- Работа с диапазоном и ячейками в VBA
- Подсчет строк с помощью VBA в Excel
- Шрифт Excel VBA (цвет, размер, тип и жирный шрифт)
- Excel VBA Скрыть и показать столбец или строку
- Как применить границы к ячейке с помощью VBA в Excel
- Как найти последнюю строку, столбец и ячейку с помощью VBA в Excel
- Как вставить строку с помощью VBA в Excel
- Как объединить ячейки в Excel с помощью кода VBA
- Как выбрать диапазон/ячейку с помощью VBA в Excel
- Как ВЫБРАТЬ ВСЕ ячейки на листе с помощью VBA
- Как использовать ActiveCell в VBA в Excel
- Как использовать метод специальных ячеек в VBA в Excel
- Как использовать свойство UsedRange в VBA в Excel
- Автоподбор VBA (строки, столбцы или весь лист)
- VBA ClearContents (из ячейки, диапазона или всего листа)
- Диапазон копирования VBA на другой лист + книгу
- VBA Введите значение в ячейку (установить, получить и изменить).
- Столбец вставки VBA (одиночный и множественный)
- Диапазон имени VBA | (Статический + Выбор + Динамический)
- Смещение диапазона VBA
- Диапазон сортировки VBA | (По убыванию, несколько столбцов, ориентация сортировки
- Текст переноса VBA (ячейка, диапазон и весь лист)
- Как выделить повторяющиеся значения в Excel с помощью кодов VBA
- Как извлечь адрес гиперссылки (URL) в Excel с помощью VBA UDF
5. Переменные и константы
6. Кудри
7. Условия
- Оператор VBA IF – IF then else
- Как проверить, существует ли лист с помощью VBA в Excel
- VBA Проверьте, пуста ли ячейка + несколько ячеек
- VBA Проверьте, существует ли книга в папке (файл Excel)
- VBA Проверьте, открыта ли книга (файл Excel)
- Выход из VBA, ЕСЛИ
- VBA IF And (проверка нескольких условий)
- VBA, ЕСЛИ НЕТ
- VBA IF OR (несколько условий тестирования)
- VBA вложенный ЕСЛИ
- Инструкция VBA SELECT CASE (проверка нескольких условий)
8. Расчеты
- Как усреднить значения в Excel с помощью VBA
- Как получить сегодняшнюю дату и текущее время с помощью VBA
- Как добавить значения в Excel с помощью VBA
- Как использовать функцию сопоставления в VBA
- Как использовать MOD в VBA
- Случайное число
- Расчет VBA (ячейка, диапазон, строка и книга)
- Объединение VBA
- Функция рабочего листа VBA (использование функций Excel в макросе)
9. Таблицы
10. Ошибки
- Обработка ошибок VBA
- Ошибка автоматизации VBA (ошибка 440)
- Ошибка VBA 400
- Неверный вызов процедуры VBA или ошибка аргумента (ошибка 5)
- Объект VBA не поддерживает это свойство или ошибка метода (ошибка 438).
- Ошибка, требующая объекта VBA (ошибка 424)
- Ошибка VBA «Недостаточно памяти» (ошибка 7)
- Ошибка переполнения VBA (ошибка 6)
- Ошибка выполнения VBA (ошибка 1004)
- Ошибка выполнения индекса VBA вне диапазона (ошибка 9)
- Ошибка несовместимости типов VBA (ошибка 13)
11. Функции
- Основные функции VBA
- Функция VBA ABS (получить абсолютное значение)
- Функция массива VBA
- Функция VBA ATN (синтаксис + пример)
- Функция VBA CBOOL (синтаксис + пример)
- Функция VBA CBYTE (синтаксис + пример)
- Функция VBA CCUR (синтаксис + пример)
- Функция VBA CDATE (синтаксис + пример)
- Функция VBA CDBL (синтаксис + пример)
- Функция VBA CDEC (синтаксис + пример)
- Функция VBA CHR (синтаксис + пример)
- Функция VBA CINT (синтаксис + пример)
- Функция VBA CLNG (синтаксис + пример)
- Функция VBA COS (синтаксис + пример)
- Функция VBA CSNG (синтаксис + пример)
- Функция VBA CSTR (синтаксис + пример)
- Функция VBA CVAR (синтаксис + пример)
- Функция VBA CVERR (синтаксис + пример)
- Функция VBA DATE (синтаксис + пример)
- Функция VBA DATEADD (синтаксис + пример)
- Функция VBA DATEPART (синтаксис + пример)
- Функция VBA DATESERIAL (синтаксис + пример)
- Функция VBA DATEVALUE (синтаксис + пример)
- Функция VBA DAY (синтаксис + пример)
- Функция VBA DDB (синтаксис + пример)
- Функция VBA EXP (синтаксис + пример)
- Функция VBA FileDateTime
- Функция VBA FILTER (синтаксис + пример)
- Функция VBA FIX (синтаксис + пример)
- Функция VBA FORMAT (синтаксис + пример)
- Функция VBA FORMATCURRENCY (синтаксис + пример)
- Функция VBA FORMATDATETIME (синтаксис + пример)
- Функция VBA FORMATNUMBER (синтаксис + пример)
- Функция VBA FORMATPERCENT (синтаксис + пример)
- Функция VBA FV (синтаксис + пример)
- Функция VBA HEX (синтаксис + пример)
- Функция VBA HOUR (синтаксис + пример)
- Функция VBA IIF (синтаксис + пример)
- Функция VBA INSTR (синтаксис + пример)
- Функция VBA INSTRREV (синтаксис + пример)
- Функция VBA INT (синтаксис + пример)
- Функция VBA IPMT (синтаксис + пример)
- Функция VBA IRR (синтаксис + пример)
- Функция VBA ISARRAY (синтаксис + пример)
- Функция VBA ISDATE (синтаксис + пример)
- Функция VBA ISEMPTY (синтаксис + пример)
- Функция VBA ISERROR (синтаксис + пример)
- Функция VBA ISMISSING (синтаксис + пример)
- Функция VBA ISNULL (синтаксис + пример)
- Функция VBA ISNUMERIC (синтаксис + пример)
- Функция VBA ISOBJECT (синтаксис + пример)
- Функция VBA JOIN (синтаксис + пример)
- Функция VBA LBOUND (синтаксис + пример)
- Функция VBA LCASE (синтаксис + пример)
- Функция VBA LEFT (синтаксис + пример)
- Функция VBA LEN (синтаксис + пример)
- Функция VBA LOG (синтаксис + пример)
- Функция VBA LTRIM (синтаксис + пример)
- Функция VBA MID (синтаксис + пример)
- Функция VBA МИНУТА (синтаксис + пример)
- Функция VBA MIRR (синтаксис + пример)
- Функция VBA МЕСЯЦ (синтаксис + пример)
- Функция VBA MONTHNAME (синтаксис + пример)
- Функция VBA NOW (синтаксис + пример)
- Функция VBA NPER (синтаксис + пример)
- Функция VBA NPV (синтаксис + пример)
- Функция VBA OCT (синтаксис + пример)
- Функция VBA PMT (синтаксис + пример)
- Функция VBA PPMT (синтаксис + пример)
- Функция VBA PV (синтаксис + пример)
- Функция VBA RATE (синтаксис + пример)
- Функция VBA REPLACE (синтаксис + пример)
- Функция VBA RIGHT (синтаксис + пример)
- Функция VBA RND (синтаксис + пример)
- Функция VBA ROUND (синтаксис + пример)
- Функция VBA RTRIM (синтаксис + пример)
- Функция VBA SECOND (синтаксис + пример)
- Функция VBA SGN (синтаксис + пример)
- Функция VBA SIN (синтаксис + пример)
- Функция VBA SLN (синтаксис + пример)
- Функция VBA SPACE (синтаксис + пример)
- Функция VBA SPLIT (синтаксис + пример)
- Функция VBA SQR (синтаксис + пример)
- Функция VBA STR (синтаксис + пример)
- Функция VBA STRCOMP (синтаксис + пример)
- Функция VBA STRCONV (синтаксис + пример)
- Функция VBA STRING (синтаксис + пример)
- Функция VBA STRREVERSE (синтаксис + пример)
- Функция VBA SYD (синтаксис + пример)
- Функция VBA TAN (синтаксис + пример)
- Функция VBA TIME (синтаксис + пример)
- Функция VBA TIMER (синтаксис + пример)
- Функция VBA TIMESERIAL (синтаксис + пример)
- Функция VBA TIMEVALUE (синтаксис + пример)
- Функция VBA TRIM (синтаксис + пример)
- Функция VBA UBOUND (синтаксис + пример)
- Функция VBA UCASE (синтаксис + пример)
- Функция VBA VAL (синтаксис + пример)
- Функция VBA WEEKDAY (синтаксис + пример)
- Функция VBA WEEKDAYNAME (синтаксис + пример)
- Функция VBA ГОД (синтаксис + пример)
12.Другое
- Как использовать поле ввода в VBA
- VBA создает и записывает в текстовый файл
- Обновление экрана VBA | Как включить и отключить его
- Строка состояния VBA (скрыть, показать и прогресс)
- Команды ожидания и сна VBA для приостановки и задержки
- Пошаговое руководство по созданию сводной таблицы в Excel с помощью VBA — МАКРОКОД
- Как искать в Google, используя код VBA
- Как вставить флажок в Excel