Найти тему

📌 VBA Excel: оператор Case - альтернатива оператору IF. Обработка множества вариантов условий. Практические примеры решений

Оглавление

Оператор Case предоставляет альтернативу оператору IF и позволяет более эффективно обрабатывать множество вариантов условий.

В этом обзоре рассмотрим синтаксис оператора Case, приведем примеры его использования и объясним, когда его использование может быть наиболее целесообразным.

VBA Excel: оператор Case - альтернатива оператору IF. Обработка множества вариантов условий. Практические примеры решений
VBA Excel: оператор Case - альтернатива оператору IF. Обработка множества вариантов условий. Практические примеры решений

📢 Скачать исходник с примером кода вы можете в конце статьи 🔽

-3

Оператор Case предоставляет удобный способ управления потоком выполнения программы и может быть более читаемым и эффективным в некоторых случаях, чем последовательные операторы IF. Он позволяет обрабатывать множество вариантов условий и улучшает структуру кода.

▶️ Синтаксис

Оператор Case используется в комбинации с оператором Select, который создает блок кода, содержащий несколько вариантов для выполнения.

Синтаксис оператора Case выглядит следующим образом:

-4

📝 Краткое описание:

-5

Для лучшего понимания работы оператора Case рассмотрим ряд примеров.

▶️ Пример 1. Совместное использование оператора Case и события Worksheet_Change

🎯 Задача: при внесении данных (оценки) в ячейку столбца В требуется указать в соответствующей ячейке столбца С расшифровку оценки.

🔘 Для реализации поставленной задачи наряду с оператором Case будем использовать событие Worksheet_Change:

Совместное использование оператора Case и события Worksheet_Change
Совместное использование оператора Case и события Worksheet_Change

Благодаря событию Worksheet_Change макрос автоматически отслеживает изменения в столбце B:

  • когда в столбце B вводится оценка (5, 4, 3, 2), макрос автоматически присваивает соответствующую оценку в столбце C (столбец справа от B).
  • в случае, если введена иная оценка или ячейка в столбце B очищена, соответствующая ячейка в столбце C также очищается.

➡️ Данный подход позволит автоматически реагировать на изменения в столбце A на листе и записывать соответствующую оценку в столбец B:

-7

Но в определенных случаях, одного только значения может быть не достаточно и требуется указать диапазон (интервал). В этом случае применяют ключевое "To".

▶️ Пример 2. Оператор Case и ключевое "To"

Ключевое слово "To" позволяет установить диапазон, который включает начальное и конечное значение.

🎯 Задача: проанализировать общую сумму покупок (столбец В) и указать в соответствующий статус заказчика (столбец С) и размер его скидки (столбец D).

🔘 Для решения поставленной задачи применим макрос:

Оператор Case и ключевое "To"
Оператор Case и ключевое "To"

🔔 Обратите внимание, что для создания диапазона значений, которые должны быть сравнены с выражением было использовано ключевое "To".

А благодаря событию Worksheet_Change макрос будет автоматически обновлять статус заказчика и размер скидки в столбцах C и D на основе суммы покупок в столбце B при изменении данных в этом столбце:

-9

▶️ Пример 3. Оператор Case и InputBox

Кроме указания данных непосредственно на листе оператор Case может быть использован в связке с InputBox:

Это позволит получить данные от пользователя и далее предоставить определенною информацию в зависимости от условия, например использовать для целей тестирования:

Оператор Case и InputBox
Оператор Case и InputBox

➡️ Данный макрос моделирует пример тестирования, где пользователю поочередно предлагаются вопросы, и он должен ввести свои ответы:

-11

➡️ Правильные ответы сравниваются с ответами пользователя, и подсчитывается количество набранных баллов:

-12

➡️ По завершении теста выводится сообщение о результате, и если пользователь набрал более 80% правильных ответов, тест считается пройденным:

-13

📝 Примечание автора: Для использования макроса, необходимо указать лист, на котором содержатся вопросы и правильные ответы (в данном случае, Лист3). Макрос пройдет по всем вопросам и выведет сообщения о правильности ответов и об итоговом результате.

🔔 Обратите внимание! вместо If используется оператор Case для сравнения ответов пользователя с правильными ответами.

Безусловно, это лишь некоторые примеры использования оператора Case. Но понимая логику его работы вы можете моделировать различные ситуации и применять Case в решении ваших задач.

▶️ Что нужно запомнить

  • Оператор Case предоставляет альтернативу оператору IF для обработки множества условий.
  • Вы можете использовать множество вариантов Case для сравнения с одни тем же выражением.
  • Ключевое слово Else в операторе Case позволяет выполнить блок кода, если ни один из предыдущих вариантов не соответствует выражению.
  • Ключевое слово To может использоваться для определения диапазона значений.
  • При использовании оператора Case следует учитывать порядок вариантов, так как выполнение кода начнется с первого соответствующего варианта и будет продолжено до тех пор, пока не встретится подходящий Case или Case Else.
  • Оператор Case обычно более эффективен и легче читается, чем последовательные вложенные операторы IF, особенно при большом количестве условий.
  • Вы можете использовать оператор Case не только для сравнения числовых значений, но и для строк, перечислений и других типов данных.

🔔 Важно! При работе с Case следует следить за тем, чтобы не возникало дублирования условий, иначе это может привести к непредсказуемым результатам.

-14
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР