После урока сможешь: объявлять переменные нужного типа, применять арифметические/логические операторы и базовые встроенные функции VBA для чисел, строк, дат и массивов — и безопасно пройти путь от первого кода до сохранённого файла с макросом.
Что такое VBA и где его искать
VBA (Visual Basic for Applications) — встроенный язык программирования Microsoft Office для автоматизации задач: макросы, обработка данных, свои функции. Редактор кода открывается сочетанием Alt+F11. В нём есть окно кода (где пишут процедуры), окно проекта (список книг/листов/модулей) и окно вывода Immediate Window (для отладки, команда Debug.Print).
Первый запуск: модуль, F5, сохранение, безопасность
Код процедур и функций пишут не на листе и не в самой книге, а в обычном модуле: в редакторе VBA — правой кнопкой по названию проекта → Insert → Module (или через меню «Вставка → Модуль»). Внутри модуля пишут Sub ИмяПроцедуры() ... End Sub. Чтобы запустить процедуру: поставь курсор внутрь неё и нажми F5 в редакторе, либо в самом Excel открой список макросов клавишами Alt+F8 и запусти нужный по имени.
Обычная книга *.xlsx код VBA НЕ сохраняет — при сохранении макрос будет потерян молча, без предупреждения. Книгу с макросами обязательно сохраняют в формате Excel Macro-Enabled Workbook (*.xlsm).

При открытии файла с макросами из интернета или почты Excel показывает жёлтую полосу предупреждения безопасности. Включать макросы («Enable Content») стоит только в файлах из доверенного источника — своих или проверенных; в файлах от незнакомых отправителей макросы включать не нужно.

Переменные и типы данных
Переменные объявляют ключевым словом Dim: Dim age As Integer. Основные типы: Integer — целые числа, Double — числа с плавающей точкой, String — текст, Boolean — True/False, Date — дата и время.
Dim age As Integer -> целое число Dim price As Double -> число с плавающей точкой Dim name As String -> текст Dim isTrue As Boolean -> True/False Dim today As Date -> дата/время
Операторы: арифметика, сравнение, логика, строки
Арифметика: + - * / и Mod (остаток от деления). Сравнение: = <> > < >= <=. Логика: And (И), Or (ИЛИ), Not (НЕ). Строки объединяют знаком &.
Dim a As Integer, b As Integer, result As Integer a = 10 : b = 3 result = a + b ' 13 — сложение result = a - b ' 7 — вычитание result = a * b ' 30 — умножение result = a Mod b ' 1 — остаток от деления Dim x As Integer, y As Integer, isTrue As Boolean x = 10 : y = 5 isTrue = (x > y) ' True — сравнение isTrue = (x > 0 And y > 0) ' True — оба условия сразу (И) Dim firstName As String, lastName As String firstName = "Анна" : lastName = "Петрова" Debug.Print firstName & " " & lastName ' Анна Петрова — конкатенация
Массивы и встроенные функции
Массив — это пронумерованный набор ячеек памяти под одним именем, как ряд одинаковых коробок с номерами на них: не 5 отдельных переменных score1…score5, а одна переменная scores, где к каждому значению обращаются по номеру (индексу). Индексы в VBA по умолчанию начинаются с 0.
Забегаем вперёд. В примере ниже встретится конструкция
For i = ... To ... / Next i— это цикл: он повторяет одну и ту же строку кода для каждого значения счётчикаi. Здесь он нужен только для того, чтобы показать, как перебрать весь массив; подробно циклы разберём в следующей теме 5.2. Пока достаточно читать её как «повтори это для каждого номера от первого до последнего».
Dim scores(4) As Integer ' массив на 5 ячеек: индексы 0,1,2,3,4
scores(0) = 78
scores(1) = 92
scores(2) = 65
scores(3) = 88
scores(4) = 71
Debug.Print scores(2) ' 65 — прямое обращение по индексу
Debug.Print UBound(scores) ' 4 — наибольший индекс
Debug.Print LBound(scores) ' 0 — наименьший индекс
For i = LBound(scores) To UBound(scores)
Debug.Print scores(i) ' переберёт все 5 оценок по очереди
Next i
Готовый список значений сразу — без построчного присвоения: Array(1, 2, 3). Изменить размер уже существующего массива, сохранив старые значения — ReDim Preserve. Разбить строку на массив по разделителю — Split.
Dim fruits As Variant
fruits = Array("яблоко", "банан", "груша") ' готовый массив из 3 элементов
Debug.Print fruits(1) ' банан
ReDim Preserve scores(6) ' было 5 ячеек (0-4), стало 7 (0-6), значения 0-4 сохранены
Dim csv As String
csv = "Иванов,Петров,Сидоров"
Dim names As Variant
names = Split(csv, ",") ' names(0)="Иванов", names(1)="Петров", names(2)="Сидоров"
Строковые функции: Len (длина), UCase/LCase (регистр), InStr (позиция подстроки), Trim (обрезать пробелы), Mid (извлечь часть). Числовые: Abs, Sqr, Round. Даты: Year/Month/Day, DateAdd/DateDiff.
Dim s As String
s = " Отчёт "
Debug.Print Len(s) ' 8 — длина строки (с пробелами)
Debug.Print UCase(s) ' " ОТЧЁТ " — в верхний регистр
Debug.Print Trim(s) ' "Отчёт" — без пробелов по краям
Debug.Print InStr(s, "ч") ' 5 — позиция первого вхождения
Dim currentDate As Date
currentDate = Date
Dim newDate As Date
newDate = DateAdd("d", 7, currentDate) ' прибавить 7 дней
Debug.Print DateDiff("d", currentDate, newDate) ' 7 — разница в днях
Проверь себя
Контрольный вопрос. Что такое VBA?
Подсказка: VBA живёт ВНУТРИ Office, не отдельно от него.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Отметь все верные шаги первого запуска макроса (не менее двух вариантов).
Выберите все верные варианты.
Подсказка: Два варианта либо путают модуль с ячейкой листа, либо дают опасный совет про безопасность.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Excel показал жёлтую полосу с предупреждением про макросы при открытии файла, присланного по почте. Как правильно поступить?
Подсказка: Предупреждение — это не запрет, а приглашение подумать об источнике файла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. Объяви переменную с именем price, которая будет хранить дробное число (например, 10.5). Впиши строку целиком, как её пишут в модуле.
Подсказка: Схема объявления: ключевое слово объявления, имя переменной, слово As и название типа. Дробные числа хранит тип Double.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Dim price As Double : price = 10.5 — какой тип данных у price?
Подсказка: Double хранит дробные числа.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Dim a As Integer, b As Integer : a = 10 : b = 3 : result = a Mod b — что выведет result? Впиши число.
Подсказка: Mod возвращает остаток от деления, а не частное.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Оператор & в VBA используется для…
Подсказка: Именно этот знак склеивает текстовые куски в одну строку.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. myString = «Hello» — что вернёт Len(myString)? Впиши число.
Подсказка: Len считает количество символов в строке.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. InStr(«Excel», «c») возвращает…
Подсказка: InStr ищет ПОЗИЦИЮ, а не факт наличия или количество.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. В переменной currentDate лежит дата. Нужно прибавить к ней 7 дней и положить результат в переменную newDate. Используй функцию DateAdd. Впиши строку целиком.
Подсказка: Слева от знака равно — переменная, куда кладём результат. У DateAdd три аргумента по порядку: код интервала в кавычках, сколько прибавить, к какой дате.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Отметь все верные утверждения про массивы VBA (не менее двух вариантов).
Выберите все верные варианты.
Подсказка: Два варианта неверны: ReDim Preserve именно МЕНЯЕТ размер массива (значит, размер не фиксирован), а Split делает обратное — разбивает строку НА массив, а не собирает массив в строку.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Допиши пропущенный индекс, чтобы КОД ниже записал 15 именно в ЧЕТВЁРТЫЙ по счёту элемент массива (не в пятый и не в третий). Впиши число: Dim scores(4) As Integer : scores(___) = 15
Подсказка: Индексы начинаются с 0, значит первый элемент — scores(0), а четвёртый по счёту — на 3 меньше своего номера.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Итог
Итог. VBA — встроенный язык Office (Alt+F11). Код пишут в обычном модуле (Insert → Module), запускают через F5 или список макросов (Alt+F8), а книгу с макросами сохраняют только как *.xlsm — макросы включают лишь в файлах из доверенного источника. Переменные объявляют через Dim с типом (Integer/Double/String/Boolean/Date). Арифметика, сравнение, логика и конкатенация (&) работают почти как в формулах Excel. Массивы индексируются с 0 по умолчанию; встроенные функции покрывают числа (Round, Abs), строки (Len, InStr, Mid) и даты (DateAdd, DateDiff).
← Назад к главе 5 · ↑ В начало урока · ⌂ В начало курса · Вперёд: Управляющие конструкции →
