Typ VBA

Tento článok predvedie používanie operátora VBA TypeOf.

Na určenie typu objektu sa používa operátor VBA TypeOf. To môže byť užitočné pri povolení alebo zakázaní ovládacích prvkov vo formulári VBA alebo pri riadení toku kódu v závislosti od toho, aký typ objektu sa používa.

Použitie TypeOf na ovládanie kódu

Môžeme použiť TypeOf, aby sme zaistili, že vykonaný výber je typom konkrétneho objektu, ktorý požadujeme - napríklad môžeme chcieť vybrať rozsah a potom použiť príkaz IF, aby sme zistili, čo je vybraté. Ak je vybratý rozsah, zobrazí sa správa, že je vybraný rozsah, ale ak nie je vybratý rozsah, dostaneme inú správu.

Vyberieme niekoľko buniek v našom pracovnom hárku.

Ak teraz spustíme makro nižšie, bude nám povedané, že sme vybrali rozsah.

12345678 Voľba čiastkového testu ()Dim rng As ObjectAk je výber typu TypeOf potomMsgBox „Bol vybratý rozsah!“InakMsgBox „Je vybrané niečo iné“Koniec AkKoniec pod

Ak však nevyberieme rozsah a nevyberieme niečo iné - možno graf - a potom spustíme makro, dostaneme iný výsledok!

Použitie TypeOf na ovládacích prvkoch formulára

VBA nám umožňuje vytvárať interaktívne formuláre, ktoré môže užívateľ rôznymi spôsobmi vyplniť a vrátiť údaje do kódu. Na určenie typu ovládacích prvkov, ktoré sa používajú vo formulári, môžeme použiť operátor TypeOf.

V nižšie uvedenom príklade som vytvoril užívateľský formulár s rôznymi ovládacími prvkami - niekoľko textových polí, kombinované pole, 2 tlačidlá možností, 2 začiarkavacie políčka a 3 príkazové tlačidlá.

Pomocou nižšie uvedeného kódu môžem určiť, aký typ ovládacích prvkov je vo formulári, a to opakovaním všetkých ovládacích prvkov vo formulári. Na vrátenie správy s typom ovládacieho prvku som použil funkciu TypeName a použil som vyhlásenie VBA IF pomocou Funkcia TypeOf skontrolovať, aký typ ovládača je vybratý, a potom ďalšie okno so správou, aby ste vrátili tento typ ovládania.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl ako objektZa každý ctl In Me.ControlsMsgBox (TypeName (ctl))'Na určenie typu objektu použite funkciu TypeOf.Ak TypeOf ctl je msforms.TextBox ThenMsgBox („Ovládací prvok je textové pole.“)Ináč TypOf ctl je msforms.ComboBox PotomMsgBox („Ovládací prvok je ComboBox.“)Ináč TypOf ctl je msforms.Label PotomMsgBox („Ovládací prvok je štítok“.)Ak je to inak, typ ctl je msforms.CommandButton PotomMsgBox („Ovládací prvok je príkazové tlačidlo.“)Ináč TypOf ctl je msforms.CheckBox PotomMsgBox („Ovládací prvok je začiarkavacie políčko.“)Ináč TypOf ctl je msforms.OptionButton PotomMsgBox („Ovládací prvok je prepínač/prepínač.“)InakMsgBox („Objekt je iným typom ovládania.“)Koniec AkĎalej ctlKoniec pod

Tento typ kódu môže byť veľmi užitočný, ak chceme povoliť alebo zakázať ovládacie prvky. V nižšie uvedenom kóde sú pri prvom otvorení formulára deaktivované tlačidlá možností a začiarkavacie políčka.

123456789101112 Private Sub UserForm_Initialize ()Dim ctl ako objektZa každý ctl In Me.ControlsAk TypeOf ctl je msforms.CheckBox Potomctl.Enabled = FalseInáč TypOf ctl je msforms.OptionButton Potomctl.Enabled = FalseInakctl.Enabled = PravdaKoniec AkĎalej ctlKoniec pod

Na povolenie tlačidiel a začiarkavacích políčok možností som napísal ďalší kód za tlačidlo Povoliť ovládacie prvky.

12345678910 Súkromný sub cmdEnable_Click ()Dim ctl ako objektZa každý ctl In Me.ControlsAk TypeOf ctl je msforms.CheckBox Potomctl.Enabled = Nie je ctl.EnabledInáč TypOf ctl je msforms.OptionButton Potomctl.Enabled = Nie je ctl.EnabledKoniec AkĎalej ctlKoniec pod

Keď teraz klikneme na tlačidlo Povoliť ovládacie prvky, ak sú ovládacie prvky deaktivované, povolia sa a ak sú povolené, deaktivujú sa. To sa dosiahne pomocou Nie Operátor, ktorý nám umožňuje prepínať medzi zakázaným a povoleným.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave