Excel VBA має конструкцію IF then Else, яку можна використовувати для аналізу кількох умов та виконання кодів на основі цих умов.
Іншою подібною конструкцією, яка дозволяє перевірити наявність декількох умов, є ВИБІРИ КОФЕР заяву.
Вибір регістру корисний, якщо у вас є три або більше умов, які ви хочете перевірити. Ви також можете використовувати це з двома умовами (але я відчуваю, що в такому випадку простіше використовувати інше).
Простий приклад, у якому вислів «Вибір випадку» корисний, коли ви хочете отримати оцінку учня на основі оцінок, які він/вона набрав (розглянуто як приклад далі в цьому підручнику).
Примітка: Усі приклади кодів, наведені в цьому посібнику, призначені для розміщення в модулі у VBA.
Виберіть Синтаксис регістру
Нижче наведено синтаксис Select Case у Excel VBA:
Виберіть Case Test_Expression Case Value_1 Блок коду, коли Test_Expression = Value_1 Значення регістру_2 Блок коду, коли Test_Expression = Значення_2 Значення регістру_3 Блок коду, коли Test_Expression = Значення_3 Блок коду іншого випадку, коли жодна з умов відсутня
- Test_Expression: Це вираз, значення якого ми аналізуємо за допомогою різних випадків (краще пояснюється наведеними нижче прикладами).
- Умова_1, Умова_2,…: Це умови, за яких перевіряється текстовий вираз. Якщо він відповідає умові, то виконується блок коду для даної умови.
Для кожного оператора Select Case, який ви використовуєте, потрібно використовувати оператор End Select.
Примітка: Як тільки умова виконується, VBA виходить із конструкції виділеного випадку. Отже, якщо у вас є п'ять умов, а друга умова виконується, VBA вийде з вибору випадку - інші умови не перевірятимуться.Виберіть приклади випадків
Тепер, щоб краще зрозуміти, як використовувати оператор Select Case у VBA, давайте розглянемо кілька прикладів.
Зауважте, що більшість прикладів у цьому підручнику призначені для пояснення концепції. Це може бути, а може і не бути найкращим способом виконання роботи.
Почнемо з простого прикладу того, як Select Case дозволяє нам перевірити умови.
Приклад 1 - Перевірте цифри
У наведеному нижче прикладі код просить користувача ввести будь -яке число від 1 до 5, а потім показує вікно повідомлення з номером, який ввів користувач.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Будь ласка, введіть число від 1 до 5") Виберіть Case UserInput Case 1 MsgBox "Ви ввели 1" Case 2 MsgBox "Ви ввели 2" Case 3 MsgBox "Ви ввели 3" Справа 4 MsgBox "Ви ввели 4" Випадок 5 MsgBox "Ви ввели 5" Кінець Виберіть Кінець Sub
Зауважте, що цей код далеко не корисний і навіть не є надійним. Наприклад, якщо ви введете 6 або будь -який рядок, це нічого не зробить. Але, як я вже згадував, я маю намір показати, як працює Select Case.
Приклад 2 - Використання Select Case з умовою IS
Ви можете використовувати умову IS з конструкцією Select Case, щоб перевірити значення чисел.
Код, наведений нижче, перевіряє, чи є число введення більше 100 чи ні.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Будь ласка, введіть число") Select Case UserInput Case Is = 100 MsgBox "Ви ввели число більше (або дорівнює) 100" End Виберіть End Sub
Приклад 3 - Використання Case Else для спіймання всіх
У наведеному вище прикладі я використав дві умови (менше 100 або більше або дорівнює 100).
Замість другого випадку з умовою ви також можете використовувати Case Else.
Справа "Інше" діє як загальна, і все, що не потрапляє у жодну з попередніх справ, розглядається справою "Інша".
Нижче наведено приклад коду, де я використовував інший випадок:
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Будь ласка, введіть число") Виберіть регістр UserInput Case <100 MsgBox "Ви ввели число менше 100" Інший регістр MsgBox "Ви ввели число більше (або дорівнює ) 100 "End Виберіть End Sub
Приклад 4 - Використання діапазону чисел
У Select Case ви також можете перевірити діапазон чисел.
Код нижче запитує введення і показує вікно повідомлення на основі значення.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Будь ласка, введіть число від 1 до 100") Select Case UserInput Case від 1 до 25 MsgBox "Ви ввели число менше 25" Case 26 To 50 MsgBox "Ви ввели номер між 26 і 50 "Case 51 To 75 MsgBox" Ви ввели число від 51 до 75 "Case 75 To 100 MsgBox" Ви ввели число більше 75 "End End End Sub
Приклад 5 - Отримайте оцінку на основі оцінок
Поки що ми бачили основні приклади (які не дуже корисні у практичному світі).
Ось приклад, який ближче до прикладу з реального світу, де ви можете використовувати Select Case у Excel VBA.
Наступний код дає вам оцінку, яку студент отримує на основі оцінок на іспиті.
Підклас () Затемнення студентських позначок як ціле число Затемнення FinalGrade як рядок StudentMarks = InputBox ("Введіть позначки") Виберіть регістр Випадок StudentMarks становить <33 FinalGrade = "F" Випадок від 33 до 50 FinalGrade = "E" Випадок від 51 до 60 FinalGrade = "D "Case 60 To 70 FinalGrade =" C "Case 70 To 90 FinalGrade =" B "Case 90 To 100 FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub
Наведений вище код запитує у користувача оцінки і на його основі показує вікно повідомлення з остаточною оцінкою.
У наведеному вище коді я вказав усі умови - для позначок 0-100.
Інший спосіб використання Select Case - це використання іншої справи в кінці. Це корисно, якщо ви врахували всі умови, а потім вказали, що робити, якщо жодна з умов не виконується.
Код, наведений нижче, є варіантом коду оцінки з незначною зміною. Зрештою, у нього є вираз Case else, який буде виконано, якщо жодна з вищезазначених умов не відповідає дійсності.
Sub CheckOddEven () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Select Case StudentMarks Case Is <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D "Case 60 To 70 FinalGrade =" C "Case 70 To 90 FinalGrade =" B "Case Else FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub
Приклад 6 - Створення користувацької функції (UDF) за допомогою Select Case
У наведеному вище прикладі код попросив користувача ввести позначки.
Ви також можете створити власну функцію (функцію, визначену користувачем), яку можна використовувати так само, як будь -яку звичайну функцію аркуша, і яка поверне оцінку учням.
Нижче наведено код, який створить спеціальну формулу:
Функція GetGrade (StudentMarks As Integer) Dim FinalGrade As String Select Case Case StudentMarks Case <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D" Case 60 To 70 FinalGrade = "C" Випадок від 70 до 90 FinalGrade = "B" Випадок інший FinalGrade = "A" End Select GetGrade = FinalGrade End Функція
Після того, як у вас є цей код у модулі, ви можете скористатися функцією GetGrade на робочому аркуші, як показано нижче.
Приклад 7 - Перевірте ODD / EVEN за допомогою Select Case
Нижче наведено приклад коду, де я перевіряю, чи є число в комірці A1 непарним чи парним.
Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Число парне" Case False MsgBox "Число непарне" End End End Sub
Приклад 8 - Перевірка дня будня/вихідного дня (кілька умов)
Ви також можете скористатися Select Case, щоб перевірити наявність кількох значень в одному і тому ж випадку.
Наприклад, наведений нижче код використовує поточну дату, щоб показати, чи сьогодні будні чи вихідні (де вихідними днями є субота та неділя)
Sub CheckWeekday () Вибір випадку Буденний день (Зараз) Випадок 1, 7 MsgBox "Сьогодні вихідний" Випадок інший MsgBox "Сьогодні будній день" End End Виберіть Кінець Sub
У наведеному вище коді ми перевіряємо наявність двох умов (1 і 7) в одному випадку.
Примітка: Функція будня повертає 1 для неділі та 7 для суботи.
Приклад 9 - Вкладені оператори вибору випадку
Ви також можете вкласти один оператор Select Case в інший.
Нижче наведено код, який перевіряє, чи є день будним чи вихідним, а якщо це вихідний, то він відображатиме, субота чи неділя.
Sub CheckWeekday () Вибір випадку Будні (зараз) Випадок 1, 7 Вибір випадку Будні (Зараз) Випадок 1 MsgBox "Сьогодні неділя" Справа Інший MsgBox "Сьогодні субота" Кінець Вибір справи Інший MsgBox "Сьогодні вихідний день" Кінець Вибір кінця Підп
У наведеному вище коді я вклав Select Case, щоб перевірити, чи вихідні - субота чи неділя.
Примітка: Наведений вище приклад пояснює поняття. Це не найкращий або найпрактичніший спосіб дізнатися будні/вихідні.
Приклад 10 - Перевірка рядка тексту за допомогою Select Case
Ви можете перевірити певні рядки за допомогою Select Case, а потім виконати код на основі цього.
У наведеному нижче прикладі коду він просить користувача ввести назву свого відділу та показує ім’я особи, з якою він має зв’язатися для входу.
Sub OnboardConnect () Dim Department As String Department = InputBox ("Введіть назву свого відділу") Виберіть Case Case Case "Marketing" MsgBox "Будь ласка, зв'яжіться з Бобом Рейнесом для включення" Case "Finance" MsgBox "Будь ласка, зв'яжіться з Патрісією Круз для включення" Кейс "HR" MsgBox "Будь ласка, зв'яжіться з Олівером Рендом для включення" Справа "Адміністратор" MsgBox "Будь ласка, зв'яжіться з Хелен Юм для включення" Case Else MsgBox "Будь ласка, зв'яжіться з Тоні Рендалом для включення" End End End Sub
Сподіваюся, що всі наведені вище приклади були корисними для розуміння концепції та застосування Select Case у Excel VBA.
Вам також можуть сподобатися такі підручники з VBA:
- Цикли Excel VBA - для наступного, Do while, Do Until, для кожного.
- Для наступного циклу в Excel VBA.
- Як записати макрос в Excel.