Tento článek předvede použití funkce VBA TypeName.
VBA TypeName Funkce se používá při určování typu dat uložených v buňce nebo typu vybraného objektu - například listu, rozsahu nebo buňky nebo ovládacího prvku ve formuláři.
Určení datového typu v buňce
K určení, zda byl v buňce datový typ, můžeme použít funkci TypeName s vlastností Cells.
123 | Dílčí TestCellDataType ()MsgBox "Typ dat v" & Cells (3, 2) .Address & "is" & TypeName (Cells (3, 2) .Value)End Sub |
Pokud spustíme tento kód výše s níže uvedeným listem, okno se zprávou nám řekne, jaký typ dat je v buňce.
Určení typu vybraného objektu
Můžeme také použít TypeName k určení, jaký typ objektu byl vybrán v listu - například rozsah nebo graf.
123 | Dílčí testovací výběr ()MsgBox "Vybrali jste" & TypeName (výběr)End Sub |
Nebo pokud vybereme graf:
Můžeme hlouběji procházet ještě dále a vybírat objekty v grafu a makro vrátí to, co jsme vybrali.
To vše může být nejužitečnější při budování našeho projektu VBA buď k řízení toku kódu, nebo k zamezení výskytu chyb testováním, aby se zajistilo, že je vybrán správný typ objektu, nebo je do buňky zadán správný typ dat .
Použití TypeName na ovládacích prvcích formuláře
VBA nám umožňuje vytvářet interaktivní formuláře, které může uživatel vyplňovat a vracet data do kódu, který má být použit různými způsoby. Můžeme použít operátor TypeName k určení typu ovládacích prvků, které se používají ve formuláři.
V níže uvedeném příkladu jsem vytvořil uživatelský formulář s řadou ovládacích prvků - několik textových polí, pole se seznamem, 2 tlačítka možností, 2 zaškrtávací políčka a 3 příkazová tlačítka.
Pomocí níže uvedeného kódu mohu určit, jaký typ ovládacích prvků je ve formuláři, opakováním všech ovládacích prvků ve formuláři. Použil jsem funkci TypeName k vrácení zprávy s typem ovládacího prvku pomocí příkazu VBA IF, abych zkontroloval, jaký typ ovládacího prvku je vybrán.
123456 | Sub WhatControlType ()Dim ctl jako objektPro každý ctl In Me.ControlsMsgBox "Ovládací prvek je" & TypeName (ctl)Další ctlEnd Sub |
Tento typ kódu může být velmi užitečný, pokud chceme povolit nebo zakázat ovládací prvky. V níže uvedeném kódu jsou při prvním otevření formuláře deaktivována tlačítka možností a zaškrtávací políčka.
123456789101112 | Private Sub UserForm_Initialize ()Dim ctl jako objektPro každý ctl In Me.ControlsPokud TypeName (ctl) = "CheckBox" Pakctl.Enabled = FalseElseIf TypeName (ctl) = "OptionButton" Potomctl.Enabled = FalseJinýctl.Enabled = TrueKonec IfDalší ctlEnd Sub |
Chcete -li povolit tlačítka možností a zaškrtávací políčka, napsal jsem za tlačítkem Povolit ovládací prvky další kód.
12345678910 | Private Sub cmdEnable_Click ()Dim ctl jako objektPro každý ctl In Me.ControlsPokud TypeName (ctl) = "CheckBox" Pakctl.Enabled = Není ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Potomctl.Enabled = Není ctl.EnabledKonec IfDalší ctlEnd Sub |
Funkci v tomto kódu lze také vytvořit pomocí VBA TypeOf Operator.