Excel VBA are construcția IF Then Else pe care o puteți utiliza pentru a analiza condiții multiple și a executa coduri bazat pe aceste condiții.
O altă construcție similară care vă permite să verificați condiții multiple este declarația SELECT CASE.
Select Case este util atunci când aveți trei sau mai multe condiții pe care le doriți a verifica. Puteți utiliza acest lucru și cu două condiții (dar consider că If Then Else este mai ușor de utilizat în aceste cazuri).
Un exemplu simplu în care declarația Select Case este utilă atunci când doriți să obțineți nota de student pe baza notelor pe care le-a obținut (prezentat ca exemplu mai târziu în acest tutorial).
Notă: Toate exemplele de coduri acoperite în acest tutorial sunt menite să fie plasate într-un modul în VBA.
Acest tutorial acoperă:
Selectați sintaxa de caz
Mai jos este sintaxa Selectați caz în 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: Aceasta este expresia a cărei valoare o analizăm folosind diferite cazuri (explicată mai bine cu exemplele de mai jos).
- Condition_1, Condition_2,…: Acestea sunt condițiile în care este testată expresia textului. Dacă îndeplinește condiția, atunci se execută blocul de cod pentru condiția dată.
Pentru fiecare instrucțiune Select Case pe care o utilizați, trebuie să utilizați instrucțiunea End Select.
Selectați exemple de cazuri
Acum la înțelegeți mai bine cum să folosiți instrucțiunea Select Case în VBA, să trecem prin câteva exemple.
Rețineți că majoritatea exemplelor din acest tutorial sunt menite să explice conceptul. Acestea pot sau nu să fie cel mai bun mod de a face munca.
Să începem cu un exemplu simplu de a vedea cum Select Case ne permite să verificăm condițiile.
Exemplul 1 – Verificați numerele
În exemplul de mai jos, codul cere utilizatorului să introducă orice număr între 1 și 5, apoi afișează o casetă de mesaj cu numărul introdus de utilizator.
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
Rețineți că acest cod este departe de a fi util și nu este chiar infailibil. De exemplu, dacă introduceți 6 sau orice șir, nu ar face nimic. Dar, așa cum am menționat, intenția mea aici este de a prezenta modul în care funcționează Select Case.
Exemplul 2 – Utilizarea Select Case cu condiția IS
Puteți utiliza o condiție IS cu construcția Select Case pentru a verifica valoarea numerelor.
Codul de mai jos verifică dacă numărul de intrare este mai mare de 100 sau nu.
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
Exemplu 3 – Folosind Case Else pentru a Prinde totul
În exemplul de mai sus, am folosit două condiții (mai mici de 100 sau mai mari sau egale cu 100).
În loc de al doilea caz cu o condiție, puteți utiliza, de asemenea, Case Else.
Case Else acționează ca o problemă generală și orice lucru care nu se încadrează în niciunul dintre cazurile anterioare este tratat de Case Else.
Mai jos este un exemplu de cod în care am folosit 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
Exemplul 4 – Utilizarea unui interval de numere
În Selectare Caz, puteți verifica, de asemenea, pentru o serie de numere.
Codul de mai jos solicită o intrare și afișează o casetă de mesaj bazată pe valoare.
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
Exemplul 5 – Obțineți nota pe baza notelor scorate
Până acum am văzut exemple de bază (care nu sunt cu adevărat utile în lumea practică).
Iată un exemplu care este mai aproape de un exemplu din lumea reală în care puteți utiliza Select Case in Excel VBA.
Următorul cod vă va oferi nota pe care o obține un student pe baza notele dintr-un examen.
Codul de mai sus cere utilizatorului notele și, pe baza acestuia, arată o casetă de mesaj cu nota finală.
În codul de mai sus, am au specificat toate condițiile – pentru punctele 0 – 100.
Un alt mod de a folosi Select Case este să folosiți un Case Else la final. Acest lucru este util atunci când ați luat în considerare toate condițiile și apoi specificați ce să faceți atunci când niciuna dintre condiții nu este îndeplinită.
Codul de mai jos este o variație a codului de notă cu o modificare mică. În cele din urmă, are o instrucțiune Case else, care va fi executată atunci când niciuna dintre condițiile de mai sus nu este adevărată.
Exemplul 6 – Crearea unei funcții personalizate (UDF) folosind Select Case
În exemplul de mai sus, codul a cerut utilizatorului introducerea marcajelor.
De asemenea, puteți crea o funcție personalizată (Funcție definită de utilizator) care poate fi utilizată la fel ca orice funcție obișnuită a foii de lucru și care va reveni nota elevilor.
Mai jos este codul care va crea formula personalizată:
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
Odată ce ai acest cod în modul, puteți utiliza funcția GetGrade în foaia de lucru așa cum se arată mai jos.
Exemplul 7 – Verificați ODD / EVEN cu Select Case
Mai jos este un exemplu de cod în care I verificați dacă numărul din celula A1 este impar sau par.
Exemplul 8 – Verificarea zilei de săptămână / week-end (condiții multiple)
De asemenea, puteți utiliza Selectați caz pentru a verifica mai multe valori în același caz.
De exemplu, codul de mai jos folosește data curentă pentru a arăta dacă astăzi este o săptămână sau un weekend (unde zilele de weekend sunt sâmbătă și duminică)
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub
În codul de mai sus, verificăm două condiții (1 și 7) în același caz.
Notă: funcția Weekday returnează 1 pentru duminică și 7 pentru sâmbătă.
Exemplul 9 – Declarații de caz de selectare imbricate
Puteți, de asemenea, să cuibăriți o declarație de selectare a cazului în alta.
Mai jos este un cod care verifică dacă o zi este o zi a săptămânii sau un weekend și, dacă este un weekend, se va afișa dacă este sâmbătă sau duminică.
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
În codul de mai sus, Am cuibărit Select Case pentru a verifica dacă weekendul este sâmbătă sau duminică.
Notă: Exemplul prezentat mai sus este pentru a explica conceptul. Acesta nu este cel mai bun sau cel mai practic mod de a afla ziua săptămânii / week-end.
Exemplul 10 – Verificarea șirului de text cu selectarea majusculelor
Puteți verifica șiruri specifice folosind Select Case și apoi executați codul pe baza acestuia.
În exemplul de cod de mai jos, solicită utilizatorului să introducă numele departamentului și afișează numele persoanei cu care ar trebui să se conecteze pentru integrare.
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
Sper că toate exemplele de mai sus au fost utile în înțelegerea conceptului și a aplicației Select Case în Excel VBA.
Poate vă plac și următoarele tutoriale VBA:
- Bucle Excel VBA – Pentru Următorul, Faceți În timp, Faceți până, Pentru fiecare.
- Pentru Următorul Buclă în Excel VBA.
- Cum să înregistrați o macro în Excel.