Заявление о выборе регистра в Excel VBA - объяснение с примерами

В Excel VBA есть конструкция IF Then Else, которую можно использовать для анализа нескольких условий и выполнения кодов на основе этих условий.

Еще одна похожая конструкция, которая позволяет вам проверять наличие нескольких условий, - это ВЫБРАТЬ СЛУЧАЙ утверждение.

Выбор случая полезен, когда у вас есть три или более условий, которые вы хотите проверить. Вы также можете использовать это с двумя условиями (но я считаю, что в таких случаях проще использовать If Then Else).

Простой пример, в котором оператор Select Case полезен, когда вы хотите получить оценку учащегося на основе полученных им оценок (пример рассматривается ниже в этом руководстве).

Примечание. Все примеры кода, описанные в этом руководстве, предназначены для размещения в модуле VBA.

Выберите синтаксис регистра

Ниже приведен синтаксис Select Case в Excel VBA:

Выберите Case Test_Expression Case Value_1 Кодовый блок, когда Test_Expression = Value_1 Case Value_2 Кодовый блок, если Test_Expression = Value_2 Case Value_3 Кодовый блок, если Test_Expression = Value_3 Case Else Code Block, если ни одно из условий case не выполнено End Select
  • Test_Expression: это выражение, значение которого мы анализируем, используя различные случаи (лучше поясняется примерами ниже).
  • Condition_1, Condition_2,…: это условия, при которых проверяется текстовое выражение. Если он соответствует условию, то выполняется блок кода для данного условия.

Для каждого используемого оператора Select Case необходимо использовать оператор End Select.

Примечание: Как только условие выполняется, VBA выходит из конструкции select case. Итак, если у вас есть пять условий, и второе условие выполняется, VBA выйдет из Select Case, а остальные условия не будут проверены.

Выбрать примеры случаев

Теперь, чтобы лучше понять, как использовать оператор Select Case в VBA, давайте рассмотрим несколько примеров.

Обратите внимание, что большинство примеров в этом руководстве предназначены для объяснения концепции. Это может быть, а может и не быть лучшим способом выполнить работу.

Давайте начнем с простого примера, показывающего, как Select Case позволяет нам проверять наличие условий.

Пример 1 - Проверьте числа

В приведенном ниже примере код просит пользователя ввести любое число от 1 до 5, а затем показывает окно сообщения с номером, введенным пользователем.

Sub CheckNumber () Dim UserInput as Integer UserInput = InputBox ("Пожалуйста, введите число от 1 до 5") Выберите регистр UserInput Случай 1 MsgBox "Вы ввели 1" Случай 2 MsgBox "Вы ввели 2" Случай 3 MsgBox "Вы ввели 3" Случай 4 MsgBox "Вы ввели 4" Случай 5 MsgBox "Вы ввели 5" End Select End Sub

Обратите внимание, что этот код далеко не полезен и даже не надежен. Например, если вы введете 6 или любую строку, это ничего не даст. Но, как я уже упоминал, я намерен здесь продемонстрировать, как работает Select Case.

Пример 2 - Использование Select Case с условием IS

Вы можете использовать условие IS с конструкцией Select Case для проверки значения чисел.

Приведенный ниже код проверяет, больше ли введенное число 100 или нет.

Sub CheckNumber () Dim UserInput as Integer UserInput = InputBox ("Пожалуйста, введите число") Выберите регистр UserInput Case Is = 100 MsgBox "Вы ввели число больше (или равное) 100" End Select End Sub

Пример 3 - Использование Case Else для перехвата всех

В приведенном выше примере я использовал два условия (меньше 100 или больше или равно 100).

Вместо второго case с условием вы также можете использовать Case Else.

Case Else действует как всеобъемлющий, и все, что не попадает ни в один из предыдущих случаев, обрабатывается Case Else.

Ниже приведен пример кода, в котором я использовал Case Else:

Sub CheckNumber () Dim UserInput as Integer UserInput = InputBox ("Пожалуйста, введите число") Выберите регистр UserInput Case Is <100 MsgBox "Вы ввели число меньше 100" Case Else MsgBox "Вы ввели число больше (или равное ) 100 "Конец Выбрать Конец Подп.

Пример 4 - Использование диапазона чисел

В Select Case вы также можете проверить диапазон чисел.

В приведенном ниже коде запрашивается ввод и отображается окно сообщения на основе значения.

Sub CheckNumber () Dim UserInput as Integer UserInput = InputBox ("Пожалуйста, введите число от 1 до 100") Выберите случай UserInput Case 1 To 25 MsgBox "Вы ввели число меньше 25" Case 26 To 50 MsgBox "Вы ввели число от 26 до 50 "Case 51 to 75 MsgBox" Вы ввели число от 51 до 75 "Case 75 To 100 MsgBox" Вы ввели число больше 75 "End Select End Sub

Пример 5 - Получение оценки на основе выставленных оценок

До сих пор мы видели базовые примеры (которые не очень полезны в практическом мире).

Вот пример, который ближе к реальному примеру, где вы можете использовать Select Case в Excel VBA.

Следующий код даст вам оценку, которую получает ученик на основе оценок на экзамене.

Sub Grade () Dim StudentMarks as Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Выбрать регистр StudentMarks Case Is <33 FinalGrade = "F" Вариант 33–50 FinalGrade = «E» Случай 51–60 FinalGrade = "D "Случай 60–70 FinalGrade =" C "Случай 70–90 FinalGrade =" B "Случай 90–100 FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

Приведенный выше код запрашивает у пользователя оценки и на основе этого показывает окно сообщения с итоговой оценкой.

В приведенном выше коде я указал все условия - для оценок от 0 до 100.

Другой способ использовать Select Case - использовать Case Else в конце. Это полезно, когда вы учли все условия, а затем указываете, что делать, если ни одно из условий не выполняется.

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

Sub CheckOddEven () Dim StudentMarks as Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Выбрать регистр StudentMarks Case Is <33 FinalGrade = "F" Случай 33–50 FinalGrade = «E» Случай 51–60 FinalGrade = "D "Случай 60–70 FinalGrade =" C "Случай 70–90 FinalGrade =" B "Case Else FinalGrade =" A "Конец Выбрать MsgBox" Оценка "и FinalGrade End Sub

Пример 6 - Создание пользовательской функции (UDF) с использованием Select Case

В приведенном выше примере код запрашивал у пользователя ввод оценок.

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

Ниже приведен код, который создаст настраиваемую формулу:

Функция GetGrade (StudentMarks как целое число) Dim FinalGrade As String Выбрать регистр StudentMarks Case Is <33 FinalGrade = "F" Случай от 33 до 50 FinalGrade = "E" Вариант с 51 по 60 FinalGrade = "D" Вариант от 60 до 70 FinalGrade = "C" Случай от 70 до 90 FinalGrade = "B" Вариант Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Если у вас есть этот код в модуле, вы можете использовать функцию GetGrade на листе, как показано ниже.

Пример 7 - Проверка НЕЧЕТНОГО / ЧЕТНОГО с помощью Select Case

Ниже приведен пример кода, в котором я проверяю, четное или нечетное число в ячейке A1.

Sub CheckOddEven () CheckValue = Range ("A1"). Значение Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Число четное" Case False MsgBox "Число нечетное" End Select End Sub

Пример 8 - Проверка дня недели / выходного дня (несколько условий)

Вы также можете использовать Select Case, чтобы проверить наличие нескольких значений в одном и том же случае.

Например, в приведенном ниже коде текущая дата используется, чтобы показать, является ли сегодня будний или выходной день (где выходные дни - суббота и воскресенье).

Sub CheckWeekday () Select Case Weekday (Now) Case 1, 7 MsgBox «Today is a Weekend» Case Else MsgBox «Today is a Weekday» End Select End Sub

В приведенном выше коде мы проверяем два условия (1 и 7) в одном и том же случае.

Примечание: функция будний день возвращает 1 для воскресенья и 7 для субботы.

Пример 9 - Вложенные операторы Select Case

Вы также можете вложить один оператор Select Case в другой.

Ниже приведен код, который проверяет, является ли день будним или выходным, и если это выходной, то он покажет, суббота это или воскресенье.

Sub CheckWeekday () Select Case Weekday (Now) Case 1, 7 Select Case Weekday (Now) Case 1 MsgBox «Today is Sunday» Case Else MsgBox «Today is Saturday» End Select Case Else MsgBox «Today is a Weekday» End Select End Sub

В приведенном выше коде я вложил Select Case, чтобы проверить, являются ли выходные субботой или воскресеньем.

Примечание: приведенный выше пример объясняет концепцию. Это не лучший и не самый практичный способ узнать будний / выходной.

Пример 10 - Проверка текстовой строки с помощью выбора регистра

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

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

Sub OnboardConnect () Dim Department As String Department = InputBox ("Введите название вашего отдела") Выберите Case Department Case "Marketing" MsgBox "Пожалуйста, свяжитесь с Бобом Рейнсом для адаптации" Case "Finance" MsgBox "Пожалуйста, свяжитесь с Патрисией Круз для адаптации" Кейс "HR" MsgBox "Пожалуйста, свяжитесь с Оливером Рэндом для адаптации" Кейс "Администратор" MsgBox "Пожалуйста, свяжитесь с Хелен Хьюм для адаптации" Case Else MsgBox "Пожалуйста, свяжитесь с Тони Рэндаллом для адаптации" End Select End Sub

Надеюсь, что все приведенные выше примеры были полезны для понимания концепции и применения Select Case в Excel VBA.

Вам также могут понравиться следующие руководства по VBA:

  • Циклы Excel VBA - «Далее», «Сделать пока», «Сделать до», «Для каждого».
  • Для следующего цикла в Excel VBA.
  • Как записать макрос в Excel.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave