Назва типу VBA

У цій статті буде продемонстровано використання функції 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.

wave wave wave wave wave