Тази статия ще демонстрира използването на функцията VBA TypeName.
VBA TypeName Функцията се използва за определяне на типа данни, съхранявани в клетка, или типа на избран обект - например работен лист, диапазон или клетка или контрола върху формуляр.
Определяне на типа данни в клетка
За да определим кой тип данни е в клетка, можем да използваме функцията TypeName със свойството Cells.
123 | Sub TestCellDataType ()MsgBox "Типът данни в" & клетки (3, 2). Адрес & "е" & TypeName (клетки (3, 2). Стойност)End Sub |
Ако изпълним този код по -горе с работния лист по -долу, полето за съобщение ще ни каже какъв тип данни има в клетката.
Определяне типа на избрания обект
Можем също да използваме TypeName, за да определим какъв тип обект е избран в работен лист - диапазон или диаграма например.
123 | Sub TestSelection ()MsgBox "Избрали сте" & Име на тип (Избор)End Sub |
Или, ако изберем диаграма:
Можем да пробием още повече и да изберем обектите в диаграмата и макросът ще върне това, което сме избрали.
Всичко това може да бъде най -полезно при изграждането на нашия VBA проект, който или да контролира потока на кода, или да предотврати възникването на грешки чрез тестване, за да се гарантира, че е избран правилния тип обект, или правилният тип данни е въведен в клетка .
Използване на TypeName за контрол на формуляри
VBA ни позволява да създаваме интерактивни формуляри, които потребителят може да попълва и да връща данни в кода, които да се използват по различни начини. Можем да използваме оператора TypeName, за да определим типа контроли, които се използват във формуляр.
В примера по -долу създадох потребителски формуляр с разнообразни контроли върху него - няколко текстови полета, комбинирано поле, 2 бутона за опции, 2 квадратчета за отметка и 3 командни бутона.
Използвайки кода по -долу, мога да определя какъв тип контроли са във формуляра, като преминавам през всички контроли във формуляра. Използвах функцията TypeName, за да върна съобщение с типа на контролата с VBA IF Statement, за да проверя какъв тип контрол е избран.
123456 | Sub WhatControlType ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиMsgBox "Контролът е" & TypeName (ctl)Следващ ctlEnd Sub |
Този тип код може да бъде много полезен, ако искаме да активираме или деактивираме контролите. В кода по -долу, когато формулярът се отваря за първи път, бутоните с опции и квадратчетата за отметка са деактивирани.
123456789101112 | Частен подпотребителForm_Initialize ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиАко TypeName (ctl) = "CheckBox" Тогаваctl.Enabled = FalseElseIf TypeName (ctl) = "OptionButton" Тогаваctl.Enabled = FalseИначеctl.Enabled = ВярноКрай АкоСледващ ctlEnd Sub |
За да активирам бутоните и квадратчетата за опции, написах допълнителен код зад бутона Enable Controls.
12345678910 | Частен под cmdEnable_Click ()Затъмнете ctl като обектЗа всеки ctl в мен.КонтролиАко TypeName (ctl) = "CheckBox" Тогаваctl.Enabled = Не ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Тогаваctl.Enabled = Не ctl.EnabledКрай АкоСледващ ctlEnd Sub |
Функционалността в този код също може да бъде създадена с помощта на VBA TypeOf Operator.