Оператор Case предоставляет альтернативу оператору IF и позволяет более эффективно обрабатывать множество вариантов условий.
В этом обзоре рассмотрим синтаксис оператора Case, приведем примеры его использования и объясним, когда его использование может быть наиболее целесообразным.
📢 Скачать исходник с примером кода вы можете в конце статьи 🔽
Оператор Case предоставляет удобный способ управления потоком выполнения программы и может быть более читаемым и эффективным в некоторых случаях, чем последовательные операторы IF. Он позволяет обрабатывать множество вариантов условий и улучшает структуру кода.
▶️ Синтаксис
Оператор Case используется в комбинации с оператором Select, который создает блок кода, содержащий несколько вариантов для выполнения.
Синтаксис оператора Case выглядит следующим образом:
📝 Краткое описание:
Для лучшего понимания работы оператора Case рассмотрим ряд примеров.
▶️ Пример 1. Совместное использование оператора Case и события Worksheet_Change
🎯 Задача: при внесении данных (оценки) в ячейку столбца В требуется указать в соответствующей ячейке столбца С расшифровку оценки.
🔘 Для реализации поставленной задачи наряду с оператором Case будем использовать событие Worksheet_Change:
Благодаря событию Worksheet_Change макрос автоматически отслеживает изменения в столбце B:
- когда в столбце B вводится оценка (5, 4, 3, 2), макрос автоматически присваивает соответствующую оценку в столбце C (столбец справа от B).
- в случае, если введена иная оценка или ячейка в столбце B очищена, соответствующая ячейка в столбце C также очищается.
➡️ Данный подход позволит автоматически реагировать на изменения в столбце A на листе и записывать соответствующую оценку в столбец B:
Но в определенных случаях, одного только значения может быть не достаточно и требуется указать диапазон (интервал). В этом случае применяют ключевое "To".
▶️ Пример 2. Оператор Case и ключевое "To"
Ключевое слово "To" позволяет установить диапазон, который включает начальное и конечное значение.
🎯 Задача: проанализировать общую сумму покупок (столбец В) и указать в соответствующий статус заказчика (столбец С) и размер его скидки (столбец D).
🔘 Для решения поставленной задачи применим макрос:
🔔 Обратите внимание, что для создания диапазона значений, которые должны быть сравнены с выражением было использовано ключевое "To".
А благодаря событию Worksheet_Change макрос будет автоматически обновлять статус заказчика и размер скидки в столбцах C и D на основе суммы покупок в столбце B при изменении данных в этом столбце:
▶️ Пример 3. Оператор Case и InputBox
Кроме указания данных непосредственно на листе оператор Case может быть использован в связке с InputBox:
Это позволит получить данные от пользователя и далее предоставить определенною информацию в зависимости от условия, например использовать для целей тестирования:
➡️ Данный макрос моделирует пример тестирования, где пользователю поочередно предлагаются вопросы, и он должен ввести свои ответы:
➡️ Правильные ответы сравниваются с ответами пользователя, и подсчитывается количество набранных баллов:
➡️ По завершении теста выводится сообщение о результате, и если пользователь набрал более 80% правильных ответов, тест считается пройденным:
📝 Примечание автора: Для использования макроса, необходимо указать лист, на котором содержатся вопросы и правильные ответы (в данном случае, Лист3). Макрос пройдет по всем вопросам и выведет сообщения о правильности ответов и об итоговом результате.
🔔 Обратите внимание! вместо If используется оператор Case для сравнения ответов пользователя с правильными ответами.
Безусловно, это лишь некоторые примеры использования оператора Case. Но понимая логику его работы вы можете моделировать различные ситуации и применять Case в решении ваших задач.
▶️ Что нужно запомнить
- Оператор Case предоставляет альтернативу оператору IF для обработки множества условий.
- Вы можете использовать множество вариантов Case для сравнения с одни тем же выражением.
- Ключевое слово Else в операторе Case позволяет выполнить блок кода, если ни один из предыдущих вариантов не соответствует выражению.
- Ключевое слово To может использоваться для определения диапазона значений.
- При использовании оператора Case следует учитывать порядок вариантов, так как выполнение кода начнется с первого соответствующего варианта и будет продолжено до тех пор, пока не встретится подходящий Case или Case Else.
- Оператор Case обычно более эффективен и легче читается, чем последовательные вложенные операторы IF, особенно при большом количестве условий.
- Вы можете использовать оператор Case не только для сравнения числовых значений, но и для строк, перечислений и других типов данных.
🔔 Важно! При работе с Case следует следить за тем, чтобы не возникало дублирования условий, иначе это может привести к непредсказуемым результатам.
📍 Рекомендуемые статьи 🔽