После урока сможешь: писать условия If/ElseIf, выбирать нужный вид цикла, оформлять свой код в процедуры и функции с параметрами и защищать код от падения через обработку ошибок.
Вспомни: переменные, типы и операторы из темы 5.1 — они понадобятся внутри условий и циклов без повторного объяснения.
Условия: If, ElseIf, Else
Простое условие: If age >= 18 Then MsgBox "Совершеннолетний" Else MsgBox "Нет" End If. Несколько веток — через ElseIf: сначала проверяется первое условие сверху вниз, срабатывает ПЕРВОЕ истинное, остальные не проверяются.
Dim temp As Integer
temp = 72
If temp >= 90 Then
Debug.Print "Отлично"
ElseIf temp >= 80 Then
Debug.Print "Хорошо"
ElseIf temp >= 70 Then
Debug.Print "Уд."
Else
Debug.Print "Плохо"
End If
' temp = 72 -> сработает ветка "temp >= 70", выведется "Уд."
Циклы: For, Do While, Do Until, For Each
For i = 1 To 5 ... Next i — известное число повторов. Do While условие ... Loop — пока условие ИСТИННО. Do Until условие ... Loop — пока условие ЛОЖНО (наоборот Do While). For Each элемент In коллекция ... Next — перебор элементов массива/диапазона без счётчика.
For i = 1 To 5 Do While i <= 5 Do Until i > 5
Debug.Print i Debug.Print i Debug.Print i
Next i i = i + 1 i = i + 1
Loop Loop
Выполнится, пока Выполнится, пока Выполнится, пока
счётчик не превысит 5 условие ИСТИННО условие ЛОЖНО
Свои процедуры (Sub) и функции (Function)
Процедура (Sub) выполняет действие и НЕ возвращает значение: Sub Привет() Debug.Print "Привет!" End Sub. Функция (Function) возвращает значение — присваивают имени функции внутри тела: Function Четность(n As Integer) As String : If n Mod 2 = 0 Then Четность = "Чётное" Else Четность = "Нечётное" : End Function. Обе могут принимать параметры в скобках.
Обработка ошибок: On Error
On Error Resume Next — пропустить строку с ошибкой и продолжить. On Error GoTo Метка — при ошибке перейти на метку с кодом обработки. On Error GoTo 0 — снова включить стандартный (аварийный) режим. Код ошибки и текст доступны через Err.Number/Err.Description.
Sub БезопасноеДеление()
On Error GoTo Обработка
Dim result As Double
result = 10 / 0 ' деление на ноль вызовет ошибку
Debug.Print result
Exit Sub ' пропускаем обработчик, если ошибки не было
Обработка:
Debug.Print "Ошибка: " & Err.Description ' текст ошибки
Resume Next
End Sub
Проверь себя
Контрольный вопрос. score = 85. If score >= 90 Then MsgBox «Отлично» ElseIf score >= 80 Then MsgBox «Хорошо» ElseIf score >= 70 Then MsgBox «Уд.» Else MsgBox «Плохо» End If — что покажет MsgBox?
Подсказка: Проверяй условия по порядку сверху вниз — первое истинное и сработает.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Чем Do While отличается от Do Until (при одинаковом условии)?
Подсказка: Смотри на смысл слов: «пока» (While) и «до тех пор пока не» (Until) — противоположные направления.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. Нужен цикл, который повторится 10 раз со счётчиком i, начиная с 1. Впиши только ПЕРВУЮ строку такого цикла (строку-заголовок, без тела и без закрывающей строки).
Подсказка: Строка-заголовок цикла со счётчиком состоит из ключевого слова цикла, имени счётчика, знака равно, начального значения, слова To и конечного значения.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. For Each элемент In массив … Next — что делает эта конструкция?
Подсказка: Ключевая разница с For…To — здесь нет счётчика и границ, только «для каждого элемента».
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. В чём главное отличие процедуры (Sub) от функции (Function)?
Подсказка: Функция «функционирует» и отдаёт результат; процедура просто выполняет действие.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Дан код:
Function Квадрат(n As Double) As Double<br> Квадрат = n * n<br>End Function
Sub Тест()<br> Debug.Print Квадрат(6)<br>End SubЧто выведет Debug.Print при запуске процедуры Тест? Впиши число.
Подсказка: Функция возвращает переданное число, умноженное само на себя.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. В цикле ниже пропущен оператор сравнения. Цикл должен выполняться, пока i меньше или равно 5:
Dim i As Integer<br>i = 1<br>Do While i ___ 5<br> Debug.Print i<br> i = i + 1<br>LoopКакой оператор вписать вместо ___ (запиши знаками, без слов)?
Подсказка: «Меньше или равно» — это два символа подряд, без пробела между ними.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. On Error Resume Next перед строкой с потенциальной ошибкой делает что?
Подсказка: «Resume Next» буквально означает «продолжить со следующей строки».
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. В начале процедуры нужно включить перехват ошибок так, чтобы при любой ошибке выполнение прыгало на метку с именем Обработка. Впиши строку целиком.
Подсказка: Конструкция состоит из трёх ключевых слов подряд (перехват ошибки и переход) и имени метки в конце — без двоеточия.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. On Error GoTo Метка … Метка: MsgBox «Ошибка: » & Err.Description — что покажет Err.Description?
Подсказка: Err.Number даёт код, а Err.Description — как раз текст описания.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. i = 1 : Do Until i > 3 : Debug.Print i : i = i + 1 : Loop — сколько раз выполнится Debug.Print? Впиши число.
Подсказка: Вспомни разницу Do While/Do Until: условие проверяется КАЖДЫЙ раз перед новым проходом цикла. Посчитай, сколько раз оно останется ложным до первого истинного значения.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Отметь все верные утверждения про управляющие конструкции VBA (не менее двух вариантов).
Выберите все верные варианты.
Подсказка: Два варианта либо путают понятия местами, либо описывают то, чего конструкция не делает.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Итог
Итог. If/ElseIf проверяет условия по порядку до первого истинного. For — известное число повторов, Do While/Do Until — пока условие истинно/ложно, For Each — перебор без счётчика. Sub выполняет действие, Function возвращает значение через присвоение своему имени. On Error Resume Next/GoTo защищают код от аварийной остановки.
← Назад к главе 5 · ↑ В начало урока · ⌂ В начало курса · Вперёд: Объекты Excel из VBA →
