Excel VBA har IF Then Else-konstruktionen som du kan använda för att analysera flera förhållanden och utföra koder baserat på dessa villkor.
En annan liknande konstruktion som gör att du kan söka efter flera villkor är SELECT CASE-satsen.
Select Case är användbart när du har tre eller flera villkor som du vill ha att kolla. Du kan också använda detta under två förhållanden (men jag känner att If Then Else är lättare att använda i sådana fall).
Ett enkelt exempel där Select Case-uttalandet är användbart när du vill få betyget student baserat på de betyg som han / hon har fått (täckt som ett exempel senare i den här självstudien).
Obs! Alla exempelkoder som täcks i denna handledning är avsedda att placeras i en modul i VBA. / p>
Denna handledning omfattar:
Välj fallsyntax
Nedan är syntaxen för Välj fall i 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: 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 de villkor som textuttrycket testas på. Om det uppfyller villkoret körs kodblocket för det angivna villkoret.
För varje Select Case-uttalande som du använder måste du använda End Select-uttalandet.
Välj Case Exempel
Nu till bättre förstå hur man 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. Det här är kanske 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 söka efter förhållanden.
Exempel 1 – Kontrollera siffrorna
I exemplet nedan ber koden användaren att ange valfritt nummer mellan 1 och 5 och visar sedan ett meddelandefält med det nummer som användaren angav.
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
Observera att den här koden är långt ifrån användbar och inte ens idiotsäker. Om du till exempel anger 6 eller någon sträng, skulle det ingenting göra. Men som jag nämnde är min avsikt här att visa hur Select Case fungerar.
Exempel 2 – Använd Select Case med IS-tillstånd
Du kan använda ett IS-tillstånd med Select Case-konstruktionen för att kontrollera värdet på siffror.
Koden nedan kontrollerar om ingångsnumret är större än 100 eller inte.
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
Exempel 3 – Använda Case Else 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).
I stället för det andra fallet med ett villkor, du kan också använda Case Else.
Case Else fungerar som en allting och allt som inte faller i något av de tidigare ärendena behandlas av Case Else.
Nedan följer en exempelkod där jag har använt 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
Exempel 4 – Använda ett antal siffror
I Select Fall kan du också söka efter ett antal siffror.
Koden nedan ber om en inmatning och visar en meddelandefält baserat på värdet.
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
Exempel 5 – Få betyget baserat på betygssatta märken
Hittills har vi sett grundläggande exempel (som inte är riktigt 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 det betyg en student får baserat på poängen i en tentamen.
Koden ovan ber användaren om poängen och baserat på den visar en meddelandefält med slutbetyget.
I ovanstående kod har jag angav alla villkor – för markeringarna 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 redovisat 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 förändring. I slutändan har den ett Case else-uttalande, som kommer att utföras när inget av ovanstående villkor är sant.
Exempel 6 – Skapa en anpassad funktion (UDF) med Select Case
I exemplet ovan frågade koden användaren om inmatning av märken.
Du kan också skapa en anpassad funktion (användardefinierad funktion) som kan användas precis som alla vanliga kalkylfunktioner och som kommer att returneras elevernas betyg.
Nedan är koden som skapar den anpassade formeln:
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
När du har den här koden i modul, kan du använda funktionen GetGrade i kalkylbladet som visas nedan.
Exempel 7 – Kontrollera ODD / EVEN med Select Case
Nedan följer en exempelkod där jag kontrollera om siffran i cell A1 är udda eller jämn.
Exempel 8 – Kontroll av veckodag / helg (flera förhållanden)
Du kan också använda Select Case för att söka efter flera värden i samma fall.
Till exempel använder koden nedan det aktuella datumet för att visa om idag är en veckodag eller helg (där helgdagar är lördag och söndag)
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub
I ovanstående kod kontrollerar vi om det finns 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å hysa ett Select Case-uttalande i ett annat.
Nedan följer en kod som kontrollerar om en dag är en vardag eller en helg och om det är en helg visas den om det är en lördag eller en söndag.
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
I ovanstående kod, Jag har kapslat 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 det mest praktiska sättet att ta reda på vardag / helg.
Exempel 10 – Kontrollera textsträng med Select Case
Du kan kontrollera specifika strängar med Select Case och sedan exekvera kod baserat på den.
I exemplet nedan ber den användaren att ange sitt avdelningsnamn och visar namnet på den person de ska ansluta sig till ombord.
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
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-självstudier:
- Excel VBA-slingor – För nästa, gör medan, gör tills, för varje.
- För nästa slinga i Excel VBA.
- Hur man spelar in en makro i Excel.