Instrukcja Excel VBA Select Case – wyjaśnione z przykładami

Excel VBA ma konstrukcję IF Then Else, której można używać do analizowania wielu warunków i wykonywania kodów na podstawie tych warunków.

Inną podobną konstrukcją, która umożliwia sprawdzenie wielu warunków, jest instrukcja SELECT CASE.

Funkcja Select Case jest przydatna, gdy masz trzy lub więcej warunków, które chcesz sprawdzić. Możesz również użyć tego z dwoma warunkami (ale wydaje mi się, że w takich przypadkach łatwiej jest użyć If Then Else).

Prosty przykład, w którym instrukcja Select Case jest przydatna, gdy chcesz uzyskać ocenę student na podstawie ocen, które uzyskał (omówione jako przykład w dalszej części tego samouczka).

Uwaga: Wszystkie przykładowe kody omówione w tym samouczku mają być umieszczone w module w języku VBA.

Ten samouczek obejmuje:

Wybierz składnię wielkości liter

Poniżej znajduje się składnia funkcji Wybierz wielkość liter w programie Excel VBA:

Select Case Test_ExpressionCase Value_1Code Block when Test_Expression = Value_1Case Value_2Code Block when Test_Expression = Value_2Case Value_3Code Block when Test_Expression = Value_3Case ElseCode Block when none of the case conditions are metEnd Select
  • Test_Expression: jest to wyrażenie, którego wartość analizujemy za pomocą różnych przypadków (lepiej wyjaśnionych na poniższych przykładach).
  • Warunek_1, Warunek_2,…: są to warunki, w których testowane jest wyrażenie tekstowe. Jeśli spełnia warunek, wykonywany jest blok kodu dla danego warunku.

Dla każdej instrukcji Select Case, której używasz, musisz użyć instrukcji End Select.

Uwaga: gdy tylko warunek zostanie spełniony, VBA zamyka konstrukcję wyboru przypadku. Więc jeśli masz pięć warunków, a drugi warunek jest spełniony, VBA zamknie Select Case – a pozostałe warunki nie zostaną przetestowane.

Wybierz przykłady przypadków

Teraz, aby lepiej zrozumieć, jak używać instrukcji Select Case w VBA, przejrzyjmy kilka przykładów.

Zauważ, że większość przykładów w tym samouczku ma na celu wyjaśnienie tej koncepcji. To może być najlepszy sposób wykonania pracy, ale nie musi.

Zacznijmy od prostego przykładu, w jaki sposób Select Case pozwala nam sprawdzić warunki.

Przykład 1 – Sprawdź liczby

W poniższym przykładzie kod prosi użytkownika o wprowadzenie dowolnej liczby od 1 do 5, a następnie wyświetla okno komunikatu z numerem wprowadzonym przez użytkownika.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 5")Select Case UserInputCase 1MsgBox "You entered 1"Case 2MsgBox "You entered 2"Case 3MsgBox "You entered 3"Case 4MsgBox "You entered 4"Case 5MsgBox "You entered 5"End SelectEnd Sub

Zauważ, że ten kod jest daleki od użyteczności i nie jest nawet niezawodny. Na przykład, jeśli wpiszesz 6 lub dowolny ciąg, nic nie zrobi. Ale jak wspomniałem, moim zamiarem jest tutaj pokazanie, jak działa Select Case.

Przykład 2 – Używanie Select Case z warunkiem IS

Możesz użyć warunku IS z konstrukcją Select Case do sprawdzenia wartości liczb.

Poniższy kod sprawdza, czy wprowadzona liczba jest większa niż 100, czy nie.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case Is >= 100MsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub

Przykład 3 – Wykorzystanie przypadku innego do złapania wszystkich

W powyższym przykładzie użyłem dwóch warunków (mniej niż 100 lub więcej niż lub równe 100).

Zamiast drugiego przypadku z warunek, możesz również użyć Case Else.

Case Else działa jako catch-all i wszystko, co nie pasuje do żadnego z poprzednich przypadków, jest traktowane przez Case Else.

Poniżej znajduje się przykładowy kod, w którym użyłem Case Else:

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case ElseMsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub

Przykład 4 – Korzystanie z zakresu liczb

W zaznaczeniu Case, możesz również sprawdzić zakres liczb.

Poniższy kod prosi o wprowadzenie danych i wyświetla okno komunikatu oparte na wartości.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 100")Select Case UserInputCase 1 To 25MsgBox "You entered a number less than 25"Case 26 To 50MsgBox "You entered a number between 26 and 50"Case 51 To 75MsgBox "You entered a number between 51 and 75"Case 75 To 100MsgBox "You entered a number more than 75"End SelectEnd Sub

Przykład 5 – Uzyskaj ocenę na podstawie uzyskanych ocen

Do tej pory widzieliśmy podstawowe przykłady (które nie są zbyt przydatne w praktyce).

Oto przykład, który jest bliższy rzeczywistemu przykładowi, w którym możesz użyć funkcji Select Case w Excel VBA.

Poniższy kod daje ocenę, jaką uczeń otrzymuje na podstawie oceny z egzaminu.

Powyższy kod prosi użytkownika o oceny i na jego podstawie wyświetla okienko komunikatu z oceną końcową.

W powyższym kodzie mam określił wszystkie warunki – dla znaczników od 0 do 100.

Innym sposobem użycia Select Case jest użycie Case Else na końcu. Jest to przydatne, gdy uwzględnisz wszystkie warunki, a następnie określisz, co zrobić, gdy żaden z warunków nie jest spełniony.

Poniższy kod jest odmianą kodu oceny z niewielką zmianą. Na końcu ma instrukcję Case else, która zostanie wykonana, gdy żaden z powyższych warunków nie będzie spełniony.

Przykład 6 – Tworzenie funkcji niestandardowej (UDF) przy użyciu funkcji Select Case

W powyższym przykładzie kod poprosił użytkownika o wprowadzenie znaczników.

Możesz również utworzyć funkcję niestandardową (funkcję zdefiniowaną przez użytkownika), której można używać tak jak każdej zwykłej funkcji arkusza i która zwróci ocena uczniów.

Poniżej znajduje się kod, który utworzy niestandardową formułę:

Function GetGrade(StudentMarks As Integer)Dim FinalGrade As StringSelect Case StudentMarksCase Is < 33FinalGrade = "F"Case 33 To 50FinalGrade = "E"Case 51 To 60FinalGrade = "D"Case 60 To 70FinalGrade = "C"Case 70 To 90FinalGrade = "B"Case ElseFinalGrade = "A"End SelectGetGrade = FinalGradeEnd Function

Gdy już umieścisz ten kod w modułu, możesz użyć funkcji GetGrade w arkuszu, jak pokazano poniżej.

Przykład 7 – Sprawdź ODD / EVEN z Select Case

Poniżej znajduje się przykładowy kod, w którym sprawdź, czy liczba w komórce A1 jest nieparzysta czy parzysta.

Przykład 8 – Sprawdzanie dnia tygodnia / weekendu (wiele warunków)

Możesz także użyć opcji Wybierz wielkość liter, aby sprawdzić wiele wartości w ten sam przypadek.

Na przykład poniższy kod używa bieżącej daty, aby pokazać, czy dzisiejszy dzień jest dniem powszednim czy weekendem (gdzie weekendy to sobota i niedziela)

Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub

W powyższym kodzie sprawdzamy, czy występują dwa warunki (1 i 7) w tym samym przypadku.

Uwaga: funkcja Weekday zwraca 1 dla niedzieli i 7 dla soboty.

Przykład 9 – Zagnieżdżone instrukcje Select Case

Możesz również zagnieżdżać jedną instrukcję Select Case w innej.

Poniżej znajduje się kod, który sprawdza, czy dzień jest dniem tygodnia, czy weekend, a jeśli jest to weekend, wyświetli się informacja, czy jest to sobota czy niedziela.

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 SelectCase ElseMsgBox "Today is a Weekday"End SelectEnd Sub

W powyższym kodzie Zagnieżdżono Select Case, aby sprawdzić, czy weekend jest sobotą czy niedzielą.

Uwaga: powyższy przykład służy do wyjaśnienia pojęcia. To nie jest najlepszy ani najbardziej praktyczny sposób na sprawdzenie dnia tygodnia / weekendu.

Przykład 10 – Sprawdzanie ciągu tekstowego za pomocą Select Case

Możesz sprawdzić określone ciągi za pomocą Select Case, a następnie wykonać kod na jego podstawie.

W poniższym przykładowym kodzie prosi użytkownika o wprowadzenie nazwy jego działu i pokazuje imię i nazwisko osoby, z którą powinien się połączyć w celu dołączenia.

Sub OnboardConnect()Dim Department As StringDepartment = InputBox("Enter Your Department Name")Select Case DepartmentCase "Marketing"MsgBox "Please connect with Bob Raines for Onboarding"Case "Finance"MsgBox "Please connect with Patricia Cruz for Onboarding"Case "HR"MsgBox "Please connect with Oliver Rand for Onboarding"Case "Admin"MsgBox "Please connect with Helen Hume for Onboarding"Case ElseMsgBox "Please connect with Tony Randall for Onboarding"End SelectEnd Sub

Mam nadzieję, że wszystkie powyższe przykłady były pomocne w zrozumieniu koncepcji i zastosowania Select Case w Excel VBA.

Możesz także polubić następujące samouczki VBA:

  • Pętle Excel VBA – na następne, do While, do Until, For each.
  • For Next Loop w Excel VBA.
  • Jak zarejestrować makro w Excel.

Write a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *