Excel VBA Select Case Statement - förklaras med exempel

Excel VBA har IF Then Else -konstruktionen som du kan använda för att analysera flera villkor och köra koder baserat på dessa villkor.

En annan liknande konstruktion som gör att du kan leta efter flera villkor är VÄLJ FALL påstående.

Select Case är användbart när du har tre eller fler villkor som du vill kontrollera. Du kan också använda detta med två villkor (men jag känner att If Then Else är lättare att använda i dessa fall).

Ett enkelt exempel där Select Case -uttalandet är användbart när du vill få betyget på en elev baserat på de betyg han/hon har gjort (täckt som ett exempel senare i denna handledning).

Obs! Alla exempelkoder som omfattas av denna handledning är avsedda att placeras i en modul i VBA.

Välj fallsyntax

Nedan finns syntaxen för Select Case i Excel VBA:

Välj Case Test_Expression Case Value_1 Code Block när Test_Expression = Value_1 Case Value_2 Code Block när Test_Expression = Value_2 Case Value_3 Code Block när Test_Expression = Value_3 Case Else Code Block när inget av fallvillkoren är uppfyllda Slut Välj
  • Test_Expression: Detta är uttrycket vars värde vi analyserar med hjälp av olika fall (förklaras bättre med exemplen nedan).
  • Condition_1, Condition_2,…: Dessa är villkoren för textuttrycket testas. Om det uppfyller villkoret körs kodblocket för det givna villkoret.

För varje Select Case -uttalande som du använder måste du använda End Select -satsen.

Notera: Så snart ett villkor är uppfyllt, lämnar VBA den valda fallkonstruktionen. Så om du har fem villkor, och det andra villkoret är uppfyllt, skulle VBA lämna Select Case - och resten av villkoren kommer inte att testas.

Välj exempel på fall

För att bättre förstå hur du använder Select Case -uttalande i VBA, låt oss gå igenom några exempel.

Observera att de flesta exemplen i denna handledning är avsedda att förklara konceptet. Dessa kanske är det bästa sättet att få jobbet gjort.

Låt oss börja med ett enkelt exempel på hur Select Case tillåter oss att leta efter villkor.

Exempel 1 - Kontrollera siffrorna

I exemplet nedan ber koden användaren att ange valfritt nummer mellan 1 och 5, och visar sedan en meddelanderuta med det nummer som användaren angav.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vänligen ange ett nummer mellan 1 och 5") Välj Case UserInput Case 1 MsgBox "Du har angett 1" Fall 2 MsgBox "Du har angett 2" Fall 3 MsgBox "Du har angett 3" Fall 4 MsgBox "Du har angett 4" Fall 5 MsgBox "Du har angett 5" Slut Välj Slut Sub

Observera att den här koden långt ifrån är användbar och inte ens är idiotsäker. Till exempel, om du anger 6 eller någon sträng, skulle det göra ingenting. Men som jag nämnde är min avsikt här att visa hur Select Case fungerar.

Exempel 2 - Använda Select Case med IS -tillstånd

Du kan använda ett IS -villkor med Select Case -konstruktionen för att kontrollera värdet på siffror.

Koden nedan kontrollerar om inmatningsnumret är större än 100 eller inte.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vänligen ange ett nummer") Välj Case UserInput Case Is = 100 MsgBox "Du har angett ett tal som är mer än (eller lika med) 100" End Select End Sub Sub

Exempel 3 - Använda fallet annat för att fånga alla

I exemplet ovan använde jag två villkor (mindre än 100 eller större än eller lika med 100).

Istället för det andra fallet med ett villkor kan du också använda Case Else.

Case Else fungerar som en catch-all och allt som inte faller in i något av de tidigare fallen behandlas av Case Else.

Nedan är en exempelkod där jag har använt Case Else:

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vänligen ange ett nummer") Välj Case UserInput Case är <100 MsgBox "Du har angett ett tal som är mindre än 100" Fallet annat MsgBox "Du har angett ett nummer som är mer än (eller lika med ) 100 "Slut Välj Slut Sub

Exempel 4 - Använda ett antal nummer

I Select Case kan du också leta efter ett antal nummer.

Nedanstående kod ber om en ingång och visar en meddelanderuta baserad på värdet.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vänligen ange ett nummer mellan 1 och 100") Välj Case UserInput Case 1 till 25 MsgBox "Du har angett ett tal mindre än 25" Fall 26 till 50 MsgBox "Du har angett ett nummer mellan 26 och 50 "Fall 51 till 75 MsgBox" Du har angett ett nummer mellan 51 och 75 "Fall 75 till 100 MsgBox" Du har angett ett nummer mer än 75 "Slut Välj Avsluta sub

Exempel 5 - Få betyget baserat på betygen

Hittills har vi sett grundläggande exempel (som egentligen inte är användbara i den praktiska världen).

Här är ett exempel som ligger närmare ett verkligt exempel där du kan använda Select Case i Excel VBA.

Följande kod ger dig betyget en elev får baserat på betygen i en tentamen.

Underbetyg () Dim StudentMarks Som 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 90 To 100 FinalGrade =" A "End Välj MsgBox" Betyget är "& FinalGrade End Sub

Ovanstående kod ber användaren om varumärkena och baserat på den visar en meddelanderuta med slutbetyget.

I koden ovan har jag specificerat alla villkor - för märken 0 - 100.

Ett annat sätt att använda Select Case är att använda en Case Else i slutet. Detta är användbart när du har redogjort för alla villkor och sedan anger vad du ska göra när inget av villkoren är uppfyllda.

Koden nedan är en variant av betygskoden med en mindre ändring. I slutändan har den ett Case else -uttalande, som kommer att köras när inget av ovanstående villkor är sant.

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 Välj MsgBox" Betyget är "& FinalGrade End Sub

Exempel 6 - Skapa en anpassad funktion (UDF) med Select Case

I exemplet ovan frågade koden användaren om inmatningen av märken.

Du kan också skapa en anpassad funktion (användardefinierad funktion) som kan användas precis som alla vanliga kalkylbladsfunktioner och som returnerar betyget för eleverna.

Nedan är koden som skapar den anpassade formeln:

Funktion GetGrade (StudentMarks som heltal) Dim FinalGrade As String Välj fall StudentMarks fall är <33 FinalGrade = "F" fall 33 till 50 FinalGrade = "E" fall 51 till 60 FinalGrade = "D" fall 60 till 70 FinalGrade = "C" Fall 70 till 90 FinalGrade = "B" Case Else FinalGrade = "A" Slut Välj GetGrade = FinalGrade Slutfunktion

När du har denna kod i modulen kan du använda funktionen GetGrade i kalkylbladet enligt nedan.

Exempel 7 - Kontrollera ODD / EVEN med Select Case

Nedan finns en exempelkod där jag kontrollerar om talet i cell A1 är udda eller jämnt.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Siffran är jämn" Fall Falsk MsgBox "Siffran är udda" End Select End Sub Sub

Exempel 8 - Kontroll av vardag/helg (flera villkor)

Du kan också använda Select Case för att söka efter flera värden i samma case.

Till exempel använder nedanstående kod det aktuella datumet för att visa om idag är en vardag eller helg (där helgdagar är lördag och söndag)

Sub CheckWeekday () Välj Case Weekday (Now) Case 1, 7 MsgBox "Today is a Weekend" Case Else MsgBox "Today is a Weekday" End Select End Sub

I ovanstående kod söker vi efter två villkor (1 och 7) i samma fall.

Obs! Veckodagsfunktionen returnerar 1 för söndag och 7 för lördag.

Exempel 9 - Nested Select Case Statements

Du kan också bära ett Select Case -uttalande inom ett annat.

Nedan finns en kod som kontrollerar om en dag är en vardag eller en helg, och om det är en helg, kommer den att visa om det är en lördag eller en söndag.

Sub CheckWeekday () Välj Case Weekday (Nu) Case 1, 7 Välj 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

I koden ovan har jag kapat Select Case för att kontrollera om helgen är en lördag eller en söndag.

Obs! Exemplet som visas ovan är att förklara konceptet. Detta är inte det bästa eller mest praktiska sättet att ta reda på vardag/helg.

Exempel 10 - Kontroll av textsträng med Select Case

Du kan kontrollera specifika strängar med Select Case och sedan köra kod baserat på den.

I exempelkoden nedan ber den användaren att ange sitt avdelningsnamn och visar namnet på den person de ska ansluta till för ombordstigning.

Sub OnboardConnect () Dim Department As String Department = InputBox ("Ange ditt avdelningsnamn") Välj Case Department Case "Marketing" MsgBox "Vänligen kontakta Bob Raines för Onboarding" Case "Finance" MsgBox "Please connect with Patricia Cruz for Onboarding" Case "HR" MsgBox "Vänligen anslut till Oliver Rand för Onboarding" Case "Admin" MsgBox "Please connect with Helen Hume for Onboarding" Case Else MsgBox "Please connect with Tony Randall for Onboarding" End Select End Sub Sub

Hoppas att alla exemplen ovan var till hjälp för att förstå konceptet och tillämpningen av Select Case i Excel VBA.

Du kanske också gillar följande VBA -handledning:

  • Excel VBA -slingor - För nästa, gör medan, gör tills, för varje.
  • För nästa loop i Excel VBA.
  • Hur man spelar in ett makro i Excel.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave