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Сначала проверяется, распознаётся ли значение как число. Затем через CDbl выполняется числовое сравнение с нулём. Первый подходящий блок выполняется, остальные ветви пропускаются.
Пример рассчитан на обычные числовые или текстовые входные значения. Для ошибок формул в исходной ячейке добавляют отдельную обработку IsError до преобразований.
Что получится для количества 3
При B2=3 проверка положительного числа успешна, в E2 записывается «Количество верно». Цена и сумма в примере служат контекстом заказа.
Код проверяет только первую строку и пишет только E2. Остальные строки не обработаны автоматически. Для нескольких записей добавляют цикл с явно заданными границами.
Что получится для нуля или текста
При B2=0 выполнится Else: «Проверьте количество». Для обычного текстового значения, не распознанного числом, первая ветвь запишет «Нужно число».
Проверьте также −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 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.