Тип VBA Изкл

Тази статия ще демонстрира използването на VBA TypeOf оператора.

Операторът VBA TypeOf се използва за определяне на типа на обект. Това може да бъде полезно при активиране или деактивиране на контроли във VBA формуляр или за контрол на потока от код в зависимост от типа обект, който се използва.

Използване на TypeOf за контрол на кода

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

Нека изберете някои клетки в нашия работен лист.

Сега, ако изпълним макроса по -долу, ще ни бъде казано, че сме избрали диапазон.

12345678 Sub TestSelection ()Затъмняване като обектАко TypeOf Selection е Range, тогаваMsgBox "Избран е диапазон!"ИначеMsgBox "Избрано е нещо друго"Край АкоEnd Sub

Ако обаче не изберем диапазон и не изберем нещо друго - може би диаграма - и след това изпълним макроса, ще получим различен резултат!

Използване на TypeOf за контрол на формуляри

VBA ни позволява да създаваме интерактивни формуляри, които потребителят може да попълва и да връща данни в кода, които да се използват по различни начини. Можем да използваме оператора TypeOf, за да определим типа контроли, които се използват във формуляр.

В примера по -долу създадох потребителски формуляр с разнообразни контроли върху него - няколко текстови полета, комбинирано поле, 2 бутона за опции, 2 квадратчета за отметка и 3 командни бутона.

Използвайки кода по -долу, мога да определя какъв тип контроли са във формуляра, като преминавам през всички контроли във формуляра. Използвах функцията TypeName, за да върна съобщение с типа на контролата и използвах VBA IF изявление, използвайки Тип функция за да проверите какъв тип контрол е избран и след това допълнително поле за съобщение, за да върнете този тип контрол.

12345678910111213141516171819202122 Sub WhatControlType ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиMsgBox (TypeName (ctl))'Използвайте функцията TypeOf, за да определите типа на обекта.Ако TypeOf ctl е msforms.TextBox ТогаваMsgBox ("Контролът е TextBox.")ElseIf TypeOf ctl е msforms.ComboBox ТогаваMsgBox ("Контролът е ComboBox.")ElseIf TypeOf ctl е msforms.Label ТогаваMsgBox ("Контролът е етикет.")ElseIf TypeOf ctl е msforms.CommandButton ТогаваMsgBox ("Контролът е команден бутон.")ElseIf TypeOf ctl е msforms.CheckBox ТогаваMsgBox ("Контролът е квадратче за отметка.")ElseIf TypeOf ctl е msforms.OptionButton ТогаваMsgBox ("Контролът е бутон за опция/радио.")ИначеMsgBox ("Обектът е някакъв друг вид контрол.")Край АкоСледващ ctlEnd Sub

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

123456789101112 Частен подпотребителForm_Initialize ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиАко TypeOf ctl е msforms.CheckBox Тогаваctl.Enabled = FalseElseIf TypeOf ctl е msforms.OptionButton Тогаваctl.Enabled = FalseИначеctl.Enabled = ВярноКрай АкоСледващ ctlEnd Sub

За да активирам бутоните и квадратчетата за опции, написах допълнителен код зад бутона Enable Controls.

12345678910 Частен под cmdEnable_Click ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиАко TypeOf ctl е msforms.CheckBox Тогаваctl.Enabled = Не ctl.EnabledElseIf TypeOf ctl е msforms.OptionButton Тогаваctl.Enabled = Не ctl.EnabledКрай АкоСледващ ctlEnd Sub

Сега, когато щракнем върху бутона Enable Controls, ако контролите са деактивирани, те ще станат активирани и ако са активирани, те ще бъдат деактивирани. Това се постига с помощта на Не Оператор, който ни позволява да превключваме между деактивиран и активиран.

wave wave wave wave wave