У цій статті буде продемонстровано використання функції VBA TypeName.
VBA ТипНазва Функція використовується для визначення типу даних, що зберігаються у клітинці, або типу вибраного об’єкта - наприклад, аркуша, діапазону чи комірки або елемента керування у формі.
Визначення типу даних у клітинці
Щоб визначити, чи був тип даних у комірці, ми можемо використовувати функцію TypeName із властивістю Cells.
123 | Sub TestCellDataType ()MsgBox "Тип даних у" & Cells (3, 2) .Address & "is" & TypeName (Cells (3, 2) .Value)End Sub |
Якщо ми запустимо цей код вище з робочим аркушем нижче, вікно повідомлення повідомить нам, який тип даних є у комірці.
Визначення типу вибраного об’єкта
Ми також можемо використовувати TypeName, щоб визначити, який тип об’єкта був обраний на робочому аркуші - діапазон або діаграма, наприклад.
123 | Sub TestSelection ()MsgBox "Ви вибрали" & Назва типу (Вибір)End Sub |
Або, якщо ми виберемо діаграму:
Ми можемо ще детальніше розібратися і вибрати об’єкти на діаграмі, і макрос поверне те, що ми вибрали.
Все це може бути найбільш корисним при побудові нашого проекту VBA, щоб або контролювати потік коду, або запобігати виникненню помилок шляхом тестування, щоб переконатися, що вибрано правильний тип об'єкта, або правильний тип даних введено в клітинку. .
Використання TypeName для елементів керування формами
VBA дозволяє нам створювати інтерактивні форми, які користувач може заповнювати та повертати дані до коду для використання різними способами. Ми можемо використовувати оператор TypeName для визначення типу елементів керування, які використовуються у формі.
У наведеному нижче прикладі я створив форму користувача з різноманітними елементами керування - пару текстових полів, комбіноване вікно, 2 кнопки опцій, 2 прапорці та 3 кнопки команд.
Використовуючи наведений нижче код, я можу визначити, які типи елементів керування є у формі, перебираючи всі елементи керування у формі. Я використав функцію TypeName для повернення повідомлення з типом елемента керування з оператором IF VBA, щоб перевірити, який тип елемента керування вибрано.
123456 | Sub WhatControlType ()Dim ctl як об'єктДля кожного ctl In Me.ControlsMsgBox "Елемент керування" & Назва типу (ctl)Далі ctlEnd Sub |
Цей тип коду може бути дуже корисним, якщо ми хочемо увімкнути або вимкнути елементи керування. У наведеному нижче коді при першому відкритті форми кнопки опцій та прапорці вимкнено.
123456789101112 | Приватний підкористувач UserForm_Initialize ()Dim ctl як об'єктДля кожного ctl In Me.ControlsЯкщо TypeName (ctl) = "CheckBox" Тодіctl.Enabled = НеправдаElseIf TypeName (ctl) = "OptionButton" Тодіctl.Enabled = НеправдаІнакшеctl.Enabled = ПравдаЗакінчити ЯкщоДалі ctlEnd Sub |
Щоб увімкнути кнопки опцій та прапорці, я написав додатковий код за кнопкою Увімкнути елементи керування.
12345678910 | Приватний саб cmdEnable_Click ()Dim ctl як об'єктДля кожного ctl In Me.ControlsЯкщо TypeName (ctl) = "CheckBox" Тодіctl.Enabled = Не ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Тодіctl.Enabled = Не ctl.EnabledЗакінчити ЯкщоДалі ctlEnd Sub |
Функціональні можливості цього коду також можна створити за допомогою оператора VBA TypeOf.