If Then Else выбирает действие по условию. Для нескольких проверок используются ElseIf, а для оставшихся случаев — Else.

Проверим количество в B2 и запишем пояснение в E2 листа «Заказы».

Какие случаи нужно различить

В учебном заказе допустимо положительное числовое количество. Текст требует отдельного сообщения, ноль и отрицательное значение не проходят проверку. Ячейка E2 свободна для результата.

Чётко сформулируйте правило до написания кода. Если нулевой заказ допустим в вашем процессе, условие будет другим. Этот пример не запрещает ввод в Excel — он только записывает пояснение после запуска.

Как записать If и ElseIf

Option Explicit

Sub CheckQuantity()
    Dim ws As Worksheet
    Dim qty As Variant
    Set ws = ThisWorkbook.Worksheets("Заказы")
    qty = ws.Range("B2").Value
    If Not IsNumeric(qty) Then
        ws.Range("E2").Value = "Нужно число"
    ElseIf CDbl(qty) > 0 Then
        ws.Range("E2").Value = "Количество верно"
    Else
        ws.Range("E2").Value = "Проверьте количество"
    End If
End Sub
Ветви If, ElseIf и Else обрабатывают три согласованных случая ввода.
Ветви If, ElseIf и Else обрабатывают три согласованных случая ввода.

Сначала проверяется, распознаётся ли значение как число. Затем через CDbl выполняется числовое сравнение с нулём. Первый подходящий блок выполняется, остальные ветви пропускаются.

Пример рассчитан на обычные числовые или текстовые входные значения. Для ошибок формул в исходной ячейке добавляют отдельную обработку IsError до преобразований.

Что получится для количества 3

При B2=3 проверка положительного числа успешна, в E2 записывается «Количество верно». Цена и сумма в примере служат контекстом заказа.

Для B2=3 код записал ожидаемое пояснение в E2. Остальные строки не обрабатывались.
Для B2=3 код записал ожидаемое пояснение в E2. Остальные строки не обрабатывались.

Код проверяет только первую строку и пишет только E2. Остальные строки не обработаны автоматически. Для нескольких записей добавляют цикл с явно заданными границами.

Что получится для нуля или текста

При B2=0 выполнится Else: «Проверьте количество». Для обычного текстового значения, не распознанного числом, первая ветвь запишет «Нужно число».

Контроль нулевого количества: E2 содержит «Проверьте количество».
Контроль нулевого количества: E2 содержит «Проверьте количество».

Проверьте также −1 и пустое значение в своей структуре данных. Числовой текст и региональные разделители требуют отдельного решения: IsNumeric может распознавать строку как число.

Что учитывать с составными условиями

And объединяет требования, Or допускает альтернативы, Not меняет логический результат. В VBA не следует полагаться на короткое замыкание And и Or, как в некоторых других языках.

Если второе выражение небезопасно до проверки первого, разделите проверки вложенными If. Например, не выполняйте преобразование текста в число в том же выражении, надеясь, что первая часть его предотвратит.

Контроль условий

  • 3 даёт «Количество верно».
  • 0 и −1 требуют проверки.
  • Нечисловой текст даёт «Нужно число».
  • Область записи E2 согласована.
  • Ошибки формул и пустые поля имеют отдельное правило.

Сначала проверьте граничные значения в одной строке. Только после этого переносите условие на весь журнал.

Продолжить изучение: Переменные и типы данных VBA: Dim и Option Explicit, Select Case в VBA: выбор действия по значению, Циклы For Next и For Each в Excel VBA.

Разберитесь с макросами вместе с преподавателем

На занятии вы записываете действия, читаете код и проверяете результат на небольшом примере. Преподаватель подберёт задания под ваш уровень и поможет понять связь между командами VBA и изменениями в книге.

Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.

Записаться на бесплатный урок