Instrukcja Excel VBA Select Case - wyjaśniona z przykładami

Excel VBA ma konstrukcję IF Then Else, której można użyć do analizy wielu warunków i wykonywania kodów w oparciu o te warunki.

Inną podobną konstrukcją, która pozwala sprawdzić wiele warunków, jest WYBIERZ PRZYPADEK oświadczenie.

Wybierz przypadek jest przydatny, gdy masz co najmniej trzy warunki, które chcesz sprawdzić. Możesz również użyć tego z dwoma warunkami (ale uważam, że If Then Else jest łatwiejsze w takich przypadkach).

Prosty przykład, w którym instrukcja Select Case jest przydatna, gdy chcesz uzyskać ocenę ucznia na podstawie uzyskanych przez niego ocen (omówiony 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 VBA.

Wybierz składnię przypadku

Poniżej znajduje się składnia Select Case w Excel VBA:

Wybierz przypadek Test_Expression Case wartość_1 Code Block, gdy Test_Expression = Wartość_1 Case Value_2 Block Code, gdy Test_Expression = wartość_2 Case Value_3 Code Block, gdy Test_Expression = Value_3 Case Else Blok kodu, gdy żaden z warunków sprawy nie jest spełniony End Select
  • Test_Expression: Jest to wyrażenie, którego wartość analizujemy przy użyciu różnych przypadków (wyjaśnionych lepiej na poniższych przykładach).
  • Warunek_1, Warunek_2,… : Są to warunki, na których testowane jest wyrażenie tekstowe. Jeżeli spełnia warunek, to wykonywany jest blok kodu dla danego warunku.

W przypadku każdej używanej instrukcji Select Case należy użyć instrukcji End Select.

Notatka: Gdy tylko warunek zostanie spełniony, VBA wychodzi z konstrukcji select case. Jeśli więc masz pięć warunków, a drugi warunek jest spełniony, VBA wyjdzie z Select Case - a reszta warunków nie zostanie przetestowana.

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 koncepcji. To może, ale nie musi być najlepszym sposobem na wykonanie pracy.

Zacznijmy od prostego przykładu tego, jak Select Case pozwala nam sprawdzić warunki.

Przykład 1 - Sprawdź liczby

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

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Proszę wprowadzić liczbę od 1 do 5") Wybierz przypadek UserInput Case 1 MsgBox "Wprowadziłeś 1" Case 2 MsgBox "Wprowadziłeś 2" Case 3 MsgBox "Wprowadziłeś 3" Przypadek 4 MsgBox "Wprowadziłeś 4" Przypadek 5 MsgBox "Wprowadziłeś 5" End Wybierz End Sub

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

Przykład 2 - Użycie Select Case z warunkiem IS

W celu sprawdzenia wartości liczb można użyć warunku IS z konstrukcją Select Case.

Poniższy kod sprawdza, czy numer wejściowy jest większy niż 100, czy nie.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Wprowadź liczbę") Select Case UserInput Case Is = 100 MsgBox "Wprowadzono liczbę większą niż (lub równą) 100" End Wybierz End Sub

Przykład 3 - użycie Case Else do wyłapania wszystkiego

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

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

Case Else działa jako uniwersalny i wszystko, co nie należy do żadnego z poprzednich przypadków, jest traktowane przez Case Else.

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

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Proszę wprowadzić liczbę") Wybierz przypadek UserInput Case Is < 100 MsgBox "Wprowadziłeś liczbę mniejszą niż 100" Case Else MsgBox "Wprowadziłeś liczbę większą niż (lub równą ) 100" Koniec Wybierz Koniec Sub

Przykład 4 - Korzystanie z zakresu liczb

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

Poniższy kod prosi o dane wejściowe i wyświetla okno komunikatu w oparciu o wartość.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Proszę wprowadzić liczbę od 1 do 100") Wybierz przypadek UserInput Case 1 to 25 MsgBox "Wprowadziłeś liczbę mniejszą niż 25" Case 26 To 50 MsgBox "Wprowadziłeś numer między 26 a 50" Case 51 To 75 MsgBox "Wprowadziłeś liczbę między 51 a 75" Case 75 To 100 MsgBox "Wprowadziłeś liczbę większą niż 75" End Wybierz End Sub

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

Do tej pory widzieliśmy podstawowe przykłady (które nie są tak naprawdę przydatne w praktycznym świecie).

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

Poniższy kod daje ocenę, którą otrzymuje uczeń na podstawie ocen z egzaminu.

Sub Grade() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Wybierz przypadek StudentMarks Przypadek to < 33 FinalGrade = "F" Przypadek 33 do 50 FinalGrade = "E" Przypadek 51 do 60 FinalGrade = "D " Przypadek 60 do 70 FinalGrade = "C" Przypadek 70 do 90 FinalGrade = "B" Przypadek 90 do 100 FinalGrade = "A" Koniec Select MsgBox "Ocena to " & FinalGrade End Sub

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

W powyższym kodzie określiłem wszystkie warunki - dla znaków 0 - 100.

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

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

Sub CheckOddEven() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Wybierz przypadek StudentMarks Przypadek jest < 33 FinalGrade = "F" Przypadek 33 do 50 FinalGrade = "E" Przypadek 51 do 60 FinalGrade = "D " Przypadek 60 do 70 FinalGrade = "C" Przypadek 70 do 90 FinalGrade = Przypadek "B" Inny przypadek FinalGrade = "A" Koniec Select MsgBox "Ocena to " & FinalGrade End Sub

Przykład 6 - Tworzenie funkcji niestandardowej (UDF) przy użyciu funkcji Wybierz wielkość

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

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

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

Funkcja GetGrade(StudentMarks As Integer) Dim FinalGrade As String Wybierz przypadek StudentMarks Przypadek to < 33 FinalGrade = "F" Przypadek 33 do 50 FinalGrade = "E" Przypadek 51 do 60 FinalGrade = "D" Przypadek 60 do 70 FinalGrade = "C" Przypadek 70 do 90 FinalGrade = „B” Przypadek inny FinalGrade = „A” Koniec Wybierz GetGrade = FinalGrade End Function

Gdy masz ten kod w module, możesz użyć funkcji GetGrade w arkuszu, jak pokazano poniżej.

Przykład 7 - Sprawdź NIEPARZYSTE / PARZYSTE za pomocą opcji Wybierz przypadek

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

Sub CheckOddEven() CheckValue = Range("A1").Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Liczba jest parzysta" Case False MsgBox "Liczba jest nieparzysta" End Select End Sub

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

Możesz także użyć Select Case, aby sprawdzić wiele wartości w tym samym przypadku.

Na przykład poniższy kod używa bieżącej daty, aby pokazać, czy dzisiaj jest dzień powszedni, czy weekend (gdzie dni weekendowe to sobota i niedziela)

Sub CheckWeekday() Wybierz sprawę Dzień tygodnia(Teraz) Sprawa 1, 7 MsgBox Sprawa "Dzisiaj jest weekend" MsgBox "Dzisiaj jest dzień powszedni" End Wybierz End Sub

W powyższym kodzie sprawdzamy dwa warunki (1 i 7) w tym samym przypadku.

Uwaga: Funkcja dni tygodnia zwraca 1 dla niedzieli i 7 dla soboty.

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

Możesz także zagnieździć jedną instrukcję Select Case w innej.

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

Sub CheckWeekday() Wybierz sprawę Weekday(Teraz) Case 1, 7 Wybierz sprawę Weekday(Teraz) Case 1 MsgBox "Dzisiaj jest niedziela" Case Else MsgBox "Dzisiaj jest sobota" End Wybierz sprawę Else MsgBox "Today jest dzień powszedni" End Wybierz End Pod

W powyższym kodzie zagnieździłem Select Case, aby sprawdzić, czy weekend jest sobotą czy niedzielą.

Uwaga: Powyższy przykład ma na celu wyjaśnienie pojęcia. Nie jest to najlepszy ani najbardziej praktyczny sposób na poznanie dnia tygodnia/weekendu.

Przykład 10 - Sprawdzanie ciągu tekstowego za pomocą wyboru wielkości liter

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 podanie nazwy swojego działu i pokazuje imię i nazwisko osoby, z którą powinien się połączyć w celu wdrożenia.

Sub OnboardConnect() Dim Department As String Department = InputBox("Wpisz nazwę swojego działu") Wybierz dział sprawy Sprawa "Marketing" MsgBox "Połącz się z Bobem Rainesem w celu włączenia" Sprawa "Finanse" MsgBox "Połącz się z Patricią Cruz w celu włączenia" Case "HR" MsgBox "Połącz się z Oliverem Rand w celu wprowadzenia na pokład" Case "Admin" MsgBox "Połącz się z Helen Hume w celu wprowadzenia na pokład" Case Else MsgBox "Połącz się z Tonym Randallem w celu wprowadzenia na pokład" End Select End Sub

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

Możesz również polubić następujące samouczki VBA:

  • Pętle Excel VBA - do następnego, do póki, do, do każdego.
  • Dla następnej pętli w Excel VBA.
  • Jak nagrać makro w programie Excel.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave