Структурата Select Case е полезна VBA структура за решения, включващи три или повече опции в Excel 2016 (въпреки че работи и с две опции, осигурявайки алтернатива на структурата If-Then-Else).
Пример за избор на случай
Следният пример показва как да използвате структурата Select Case:
ПодпокажиОтстъпка3()
Затъмнено количество толкова дълго
Дим отстъпка като двойна
Количество = InputBox(„Въведете количество:“)
Изберете Количество на кутията
Случай от 0 до 24
Отстъпка = 0,1
Случай от 25 до 49
Отстъпка = 0,15
Случай 50 до 74
Отстъпка = 0,2
Случаят е >= 75
Отстъпка = 0,25
Край Изберете
MsgBox „Отстъпка:“ и отстъпка
Край под
В този пример променливата Количество се оценява. Рутинната проверка за четири различни случая (0–24, 25–49, 50–74 и 75 или повече).
Всеки брой оператори може да следва всеки оператор Case и всички те се изпълняват, ако случаят е верен. Ако използвате само един израз, както е в този пример, можете да поставите оператора на същия ред като ключовата дума Case, предшестван от двоеточие — символът за разделител на инструкцията VBA. Това прави кода по-компактен и малко по-ясен. Ето как изглежда рутината в този формат:
Под ПокажиОтстъпка4 ()
Затъмнено количество толкова дълго
Дим отстъпка като двойна
Количество = InputBox(„Въведете количество:“)
Изберете Количество на кутията
Случай от 0 до 24: Отстъпка = 0,1
Случай 25 до 49: Отстъпка = 0,15
Случай 50 до 74: Отстъпка = 0,2
Случай е >= 75: Отстъпка = 0,25
Край Изберете
MsgBox „Отстъпка:“ и отстъпка
Край под
Когато VBA изпълнява структура Select Case, структурата се излиза веднага щом VBA намери истински случай и изпълни операторите за този случай.
Пример за вложен Select Case
Както е показано в следващия пример, можете да вложите структури Select Case. Тази процедура проверява активната клетка и показва съобщение, описващо съдържанието на клетката. Забележете, че процедурата има три структури Select Case и всяка от тях има свой собствен израз End Select:
Под CheckCell()
Затъмни съобщение като низ
Изберете Case IsEmpty (ActiveCell)
Случай Вярно
Съобщение = „е празно“.
Друг случай
Изберете Case ActiveCell.HasFormula
Случай Вярно
Msg = „има формула“
Друг случай
Изберете Case IsNumeric (ActiveCell)
Случай Вярно
Msg = „има номер“
Друг случай
Съобщение = „има текст“
Край Изберете
Край Изберете
Край Изберете
MsgBox “Cell” & ActiveCell.Address & “ “ & Msg
Край под
Логиката е така:
Разберете дали клетката е празна.
Ако не е празен, вижте дали съдържа формула.
Ако няма формула, разберете дали съдържа числова стойност или текст.
Когато рутината приключи, променливата Msg съдържа низ, който описва съдържанието на клетката. Функцията MsgBox показва това съобщение.
Съобщение, показано от процедурата CheckCell.
Можете да вложите структурите на Select Case толкова дълбоко, колкото е необходимо, но се уверете, че всеки оператор Select Case има съответен оператор End Select.
Ако все още не сте убедени, че отстъпът на кода си заслужава усилията, предишният списък служи като добър пример. Вдлъбнатините наистина, за да направят нивата на гнездене ясни. Разгледайте същата процедура без вдлъбнатини:
Под CheckCell()
Затъмни съобщение като низ
Изберете Case IsEmpty (ActiveCell)
Случай Вярно
Съобщение = „е празно“.
Друг случай
Изберете Case ActiveCell.HasFormula
Случай Вярно
Msg = „има формула“
Друг случай
Изберете Case IsNumeric (ActiveCell)
Случай Вярно
Msg = „има номер“
Друг случай
Съобщение = „има текст“
Край Изберете
Край Изберете
Край Изберете
MsgBox “Cell” & ActiveCell.Address & “ “ & Msg
Край под
Доста неразбираемо, а?