Заява щодо вибору Excel VBA - пояснюється прикладами

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.

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

wave wave wave wave wave