Excel VBA Изберете случай - обяснено с примери

Excel VBA има конструкцията IF Then Else, която можете да използвате, за да анализирате множество условия и да изпълнявате кодове въз основа на тези условия.

Друга подобна конструкция, която ви позволява да проверявате за множество условия, е ИЗБЕРИ ДЕЛО изявление.

Избор на случай е полезен, когато имате три или повече условия, които искате да проверите. Можете също да използвате това с две условия (но аз чувствам, че тогава е по -лесно да се използва в тези случаи).

Един прост пример, при който изявлението „Избор на случай“ е полезно, когато искате да получите оценката на ученик въз основа на оценките, които той/тя е отбелязал (разглежда се като пример по -късно в този урок).

Забележка: Всички примерни кодове, обхванати в този урок, са предназначени да бъдат поставени в модул във VBA.

Изберете Синтаксис на регистъра

По -долу е синтаксисът на Select Case в Excel VBA:

Изберете случай Test_Expression Стойност на случай_1 Кодов блок, когато Test_Expression = Стойност_1 Стойност на случай_2 Кодов блок, когато Test_Expression = Стойност_2 Стойност на стойност_3 Кодов блок, когато Test_Expression = Стойност_3 Блок на друг код, когато никое от условията на случая не е изпълнено Край Изберете
  • Test_Expression: Това е изразът, чиято стойност анализираме, като използваме различни случаи (обяснено по -добре с примерите по -долу).
  • Условие_1, Условие_2, …: Това са условията, при които се тества текстовият израз. Ако отговаря на условието, тогава се изпълнява кодовият блок за даденото условие.

За всеки оператор Select Case, който използвате, трябва да използвате оператора End Select.

Забележка: Веднага щом условието е изпълнено, VBA излиза от конструкцията за избор на случай. Така че, ако имате пет условия и второто условие е изпълнено, VBA ще излезе от Select Case - и останалите условия няма да бъдат тествани.

Изберете примери за случаи

Сега, за да разберете по -добре как да използвате оператора Select Case във VBA, нека разгледаме няколко примера.

Обърнете внимание, че повечето от примерите в този урок са предназначени да обяснят концепцията. Това може или не може да бъде най -добрият начин да свършите работата.

Нека започнем с прост пример за това как Select Case ни позволява да проверим за условия.

Пример 1 - Проверете числата

В примера по -долу кодът изисква от потребителя да въведе произволен номер между 1 и 5 и след това показва поле за съобщение с номера, въведен от потребителя.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Моля, въведете число между 1 и 5") Изберете Case UserInput Case 1 MsgBox "Въведохте 1" Case 2 MsgBox "Въведохте 2" Case 3 MsgBox "Въведохте 3" Случай 4 MsgBox "Въведохте 4" Дело 5 MsgBox "Въведохте 5" Край Изберете Край Под

Имайте предвид, че този код далеч не е полезен и дори не е надежден. Например, ако въведете 6 или произволен низ, това няма да направи нищо. Но както споменах, намерението ми тук е да покажа как работи Select Case.

Пример 2 - Използване на Select Case с IS условие

Можете да използвате IS условие с конструкцията Select Case, за да проверите за стойността на числата.

Кодът по -долу проверява дали входният номер е по -голям от 100 или не.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Моля, въведете число") Select Case UserInput Case Is = 100 MsgBox "Въведохте число, по -голямо (или равно на) 100" End Изберете End Sub

Пример 3 - Използване на случай Else за улавяне на всички

В горния пример използвах две условия (по -малко от 100 или по -голямо или равно на 100).

Вместо втория случай с условие, можете да използвате и Case Else.

Case Else действа като обхващащ и всичко, което не попада в нито един от предишните случаи, се третира от Case Else.

По -долу е примерен код, в който съм използвал Case Else:

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Моля, въведете число") Select Case UserInput Case е <100 MsgBox "Въведохте число по -малко от 100" Case Else MsgBox "Въведохте число повече от (или равно на ) 100 "End Изберете End Sub

Пример 4 - Използване на диапазон от числа

В Select Case можете също да проверите за диапазон от числа.

Кодът по -долу иска въвеждане и показва поле за съобщение въз основа на стойността.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Моля, въведете число между 1 и 100") Select Case UserInput Case 1 до 25 MsgBox "Въведохте число по -малко от 25" Case 26 To 50 MsgBox "Въведохте номер между 26 и 50 "Case 51 To 75 MsgBox" Въведохте число между 51 и 75 "Case 75 To 100 MsgBox" Въведохте номер повече от 75 "End Изберете End Sub

Пример 5 - Вземете оценката въз основа на оценките

Досега сме виждали основни примери (които не са наистина полезни в практическия свят).

Ето един пример, който е по-близо до пример от реалния свят, където можете да използвате Select Case в Excel VBA.

Следният код ще ви даде оценката, която студентът получава въз основа на оценките на изпит.

Sub Grade () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Изберете случай StudentMarks Case е <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 Изберете MsgBox" Оценката е "& FinalGrade End Sub

Горният код пита потребителя за оценките и въз основа на него показва поле за съобщение с крайната оценка.

В горния код съм посочил всички условия - за марки 0 - 100.

Друг начин да използвате Select Case е да използвате Case Else в края. Това е полезно, когато сте отчели всички условия и след това посочете какво да правите, когато нито едно от условията не е изпълнено.

Кодът по -долу е вариант на кода за степен с малка промяна. В крайна сметка той има оператор Case else, който ще се изпълни, когато нито едно от горните условия не е вярно.

Sub CheckOddEven () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Изберете Case StudentMarks Case е <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 Изберете MsgBox" Оценката е "& FinalGrade End Sub

Пример 6 - Създаване на персонализирана функция (UDF) с помощта на Select Case

В горния пример кодът поиска от потребителя въвеждане на марки.

Можете също така да създадете персонализирана функция (User Defined Function), която може да се използва както всяка обикновена функция на работен лист и която ще върне оценката на учениците.

По -долу е кодът, който ще създаде персонализираната формула:

Функция GetGrade (StudentMarks As Integer) Dim FinalGrade As String Select Case StudentMarks Case е <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D" Case 60 To 70 FinalGrade = "C" Случай от 70 до 90

След като имате този код в модула, можете да използвате функцията GetGrade в работния лист, както е показано по -долу.

Пример 7 - Проверете ODD / EVEN с Select Case

По -долу е примерен код, в който проверявам дали числото в клетка A1 е нечетно или четно.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Числото е четно" Case False MsgBox "Числото е нечетно" End Select End Sub

Пример 8 - Проверка за делничен ден/уикенд (множество условия)

Можете също да използвате Select Case, за да проверите за множество стойности в един и същ регистър.

Например кодът по -долу използва текущата дата, за да покаже дали днес е делничен ден или уикенд (където уикендните дни са събота и неделя)

Sub CheckWeekday () Изберете случай Делничен ден (Сега) Случай 1, 7 MsgBox "Днес е уикенд" Case Друг MsgBox "Днес е делничен ден" End Изберете End Sub

В горния код проверяваме за две условия (1 и 7) в същия случай.

Забележка: Функцията за делничен ден връща 1 за неделя и 7 за събота.

Пример 9 - Вложени изявления за избор на случай

Можете също така да вмъкнете едно изявление Select Case в друго.

По -долу е код, който проверява дали денят е делничен или уикенд, а ако е уикенд, той ще покаже дали е събота или неделя.

Sub CheckWeekday () Select Case Weekday (Now) Case 1, 7 Select Case Weekday (Now) Case 1 MsgBox "Днес е неделя" Case Else MsgBox "Today is Saturday" End Select Case Else MsgBox "Today is a Weekday" End Select End Под

В горния код съм вложил Select Case, за да проверя дали уикендът е събота или неделя.

Забележка: Примерът, показан по -горе, е за обяснение на концепцията. Това не е най -добрият или най -практичният начин да разберете делничен ден/уикенд.

Пример 10 - Проверка на текстов низ с Select регистър

Можете да проверите конкретни низове с помощта на Select Case и след това да изпълните код въз основа на него.

В примерния код по -долу той изисква от потребителя да въведе името на своя отдел и показва името на лицето, с което трябва да се свърже за включване.

Sub OnboardConnect () Dim Department As String Department = InputBox ("Въведете името на вашия отдел") Изберете Case Case Case "Marketing" MsgBox "Моля, свържете се с Bob Raines за включване на" Case "Finance" MsgBox "Моля, свържете се с Patricia Cruz за включване" Case "HR" MsgBox "Моля, свържете се с Oliver Rand за включване" Case "Admin" MsgBox "Моля, свържете се с Helen Hume за Onboarding" Case Else MsgBox "Моля, свържете се с Tony Randall за Onboarding" End Select End Sub

Надявам се, че всички примери по -горе са били полезни при разбирането на концепцията и приложението на Select Case в Excel VBA.

Може да харесате и следните уроци по VBA:

  • Цикли на Excel VBA - За следващо, Направете докато, Направете до, За всеки.
  • За следващия цикъл в Excel VBA.
  • Как да запишете макрос в Excel.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave