Excel VBA Switch case
В VBA Switch Case, когато трябва логично да проверим или анализираме състояние и да изпълним различните редове кодове, базирани на едно и също, ние използваме IF-Else условен оператор. По подобен начин има още едно изявление Switch Case, което е по-широко известно като оператор Select Case, който може да провери или анализира множеството логически условия и да изпълни кодовите редове въз основа на тях. Когато имате три или повече логически условия за проверка, се препоръчва да използвате Select Case или Switch Case вместо конвенционален IF-Else оператор. Защото прави VBA кода по-бърз и разбираем вместо вложени в IF-Else изявления в такива случаи.
Switch Case / Select Case
Switch Case или Select Case в VBA работи по подобни линии като при IF-Else операторите. Той проверява множеството логически / условни изрази спрямо различни стойности (случаи). Щом някой от случаите съвпада с условието (става вярно за даденото условие), системата изпълнява този случай, а останалите случаи се игнорират за изпълнение. В случай, че има две случаи, които са валидни за даденото условие, само първият ще бъде изпълнен със закона на приоритета.
Синтаксис за Switch Case / Select Case е както следва:
Select Case
Case value_1
Code to Execute when Expression = value_1
Case value_2
Code to Execute when Expression = value_2
Case value_3
Code to Execute when Expression = value_3
.
.
.
Case value_n
Code to Execute when Expression = value_n
Case Else
Code to Execute when no case value meets the expression/logical test.
End Select
Където,
Израз: Това е израз, за който искахме да проверим или анализираме, използвайки различни стойности на случая.
value_1, value_2, value_3, … са логическите условия, които трябва да бъдат проверени за дадения израз.
Как да използвам декларацията за случай на превключване в Excel VBA?
Ще научим как да използваме оператора Switch Case в Excel, като използваме кода VBA.
Можете да изтеглите този шаблон на VBA Switch Excel шаблон тук - VBA Switch Case Excel шаблонКутия за превключвател VBA - пример №1
Ще проверим дали даденото число е по-малко от 100 или повече от 100. За това следвайте стъпките по-долу:
Стъпка 1: Поставете нов модул във Visual Basic Editor (VBE). Кликнете върху раздела Вмъкване > изберете Модул.
Стъпка 2: Определете нова подпроцедура във вътрешността на вмъквания модул, която може да съдържа вашия макрос.
Код:
Sub switch_case_example1 () Край Sub
Стъпка 3: Определете нова променлива с име usrInpt, която може да побере стойността на потребителя. Използвайте функцията VBA InputBox, за да създадете поле за въвеждане, което приема потребителски стойности чрез променлива usrInpt .
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля, въведете стойността си") End Sub
Стъпка 4: Използвайте оператора Select Case и предоставете стойността, предоставена от потребителя чрез променлива usrInpt . Това е изразът, който трябва да проверим при логически условия.
Код:
Sub switch_case_example1 () Dim usrInpt като Integer usrInpt = InputBox ("Моля, въведете стойността си") Изберете Case usrInpt End Sub
Стъпка 5: Въведете първия логически тест, който трябва да бъде проверен под декларацията Case, както следва.
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля, въведете стойността си") Изберете Case usrInpt Case е <100 End Sub
Стъпка 6: Използвайте функцията MsgBox, за да добавите изходно съобщение, ако Case Is <100 е истина.
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля въведете вашата стойност") Изберете Case usrInpt Case е <100 MsgBox "Предоставеният номер е по-малък от 100" End Sub
Стъпка 7: Сега трябва да предоставим изпълним оператор, когато стойността за usrInpt е по-голяма от 100. Добавете случай и MsgBox, за да постигнем това.
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля въведете вашата стойност") Изберете Case usrInpt Case е 100 MsgBox "Предоставеният номер е по-голям от 100" End Sub
Стъпка 8: Какво става, ако стойността, предоставена от потребителя, е точно 100? Нямаме добавен случай за това. Нека добавим този, който дава на потребителя съобщение, че стойността, която е въвел, е 100.
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля, въведете вашата стойност") Изберете Case usrInpt Case е 100 MsgBox "Предоставеният номер е по-голям от 100" Case Is = 100 MsgBox "Предоставеният номер е 100" End Sub
Стъпка 9: Трябва да прекратим оператора Select Case. Използвайте End Select, за да прекратите създадения цикъл.
Код:
Sub switch_case_example1 () Dim usrInpt As Integer usrInpt = InputBox ("Моля, въведете вашата стойност") Изберете Case usrInpt Case е 100 MsgBox "Предоставеният номер е по-голям от 100" Case Is = 100 MsgBox "Предоставеното число е 100" End Select End подводница
Стъпка 10: Сега стартирайте този код, като натиснете бутона Run или F5. Ще се появи ново изскачащо поле с искане за проверка на стойността. Ще въведем стойност като 110 и ще натисна бутона OK на полето за въвеждане. Тъй като числото, което въвеждам, е по-голямо от 100, веднага щом щракна върху OK, на екрана ми ще се появи ново съобщение, което казва: „Предоставеният номер е по-голям от 100“.
VBA Switch Case - Пример №2
Да предположим, че искаме да уловим оценката на учениците въз основа на техните оценки. Вижте стъпките по-долу за това как можем да постигнем това.
Стъпка 1: Дефинирайте нова под-процедура, наречена switch_case_example2 .
Код:
Sub switch_case_example2 () Край Sub
Стъпка 2: Определете две нови променливи - маркира се като цяло число и степени като низ, използвайки оператор Dim в създадената под-процедура.
Код:
Sub switch_case_example2 () Dim маркира като Integer Dim grade като String End Sub
Стъпка 3: Използвайте функцията VBA InputBox, чрез която потребителят може да въведе стойността за променливите марки .
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете марките") End Sub
Стъпка 4: Използвайте оператора Select Case и предоставете знаците за променлива като израз, който трябва да бъде проверен.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете маркировки на краищата End Sub
Тъй като искаме да възложим оценките на учениците въз основа на оценките, които въвеждат, първо трябва да определим оценките.
Стъпка 5: Използвайте декларацията за случай, за да проверите дали марките са по-малки от 35. Ако е така, присвойте стойност като „F“ на променливите степени.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е <35 степен = "F" Край Sub
Стъпка 6: Ако маркировките са между 35 и 45, задайте стойност като „D“ на променливите степени.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е <35 степен = "F" Дело от 35 до 45 степени = "D" Край Под
Стъпка 7: Ако въведените марки са между 46 и 55, стойността „C“ трябва да бъде присвоена на променливи степени.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е <35 степен = "F" Дело 35 до 45 степени = "D" Дело 46 до 55 степени = "C" край Sub
Стъпка 8: Когато маркировките са в диапазон от 56 до 65, стойността, присвоена на променливите степени, трябва да бъде „B“.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е <35 степен = "F" Дело 35 до 45 степени = "D" Дело 46 до 55 степени = "С" случай 56 до 65 степени = "B" Край Sub
Стъпка 9: За марки между 66 и 75, оценката трябва да е „A“.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е <35 степен = "F" Дело 35 до 45 степени = "D" Дело 46 до 55 степени = „С“ Дело 56 До 65 степени = „Б“ Дело 66 До 75 степени = „А“ Край Под
Стъпка 10: Ако въведените марки са повече от 75, променливата на степените трябва да бъде присвоена като „A +“
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е 75 степени = "A +" End Sub
Стъпка 11: Използване на край Изберете затварянето на веригата Select Case.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете марките") Изберете Марки на регистъра. Case е 75 степен = "A +" End Изберете End Sub
Стъпка 12: Сега трябва да проверим каква е оценката, свързана с оценките, които студентът е въвел. За да постигнете това, използвайте функцията MsgBox по такъв начин, че тя обозначава постигнатите степени в полето за съобщение.
Код:
Sub switch_case_example2 () Dim марки като Integer Dim grade As String marks = InputBox ("Моля, въведете маркировките") Изберете Марки на регистъра Case е 75 степен = "A +" End Select MsgBox "Постигната степен е:" & grade End Sub
Стъпка 13: Стартирайте този код, като натиснете бутона F5 или Run и можете да видите поле за въвеждане на VBA с искане за маркова стойност. Ще въведем знаците като 72 и ще натисна бутона OK, който присъства на полето за въвеждане. Веднага щом натисна бутона OK в полето за въвеждане, ще получа поле за съобщение, показващо степените, свързани с въведените марки.
Ето как можем да използваме оператора Switch / Select Case във VBA.
Неща, които трябва да запомните
- Switch case всъщност е синоним на оператора Select Case в VBA. Нарича се така, защото с помощта на това твърдение можем да превключваме между различните изходи едновременно.
- Това изявление може да се използва като алтернатива на цикъла IF-Else всеки път, когато имаме три или повече условия за проверка.
- Добре е, ако не използвате ELSE Case в оператора Select Case. В този случай обаче трябва да сте сигурни, че поне едно условие е вярно в целия цикъл.
Препоръчителни статии
Това е ръководство за VBA Switch Case. Тук обсъждаме как да използваме изявлението за случай на превключване в Excel VBA, заедно с практически примери и изтеглящ се шаблон на excel. Можете да разгледате и другите ни предложени статии -
- VBA колекция (примери)
- VBA IF изявления | Excel Шаблони
- Как да използвате функция за сортиране на Excel VBA?
- VBA докато цикъл (примери с шаблон на Excel)
- VBA Environment