VBA tüüp Väljas

See artikkel näitab VBA TypeOf operaatori kasutamist.

VBA TypeOf operaatorit kasutatakse objekti tüübi määramisel. See võib olla kasulik VBA vormi juhtelementide lubamisel või keelamisel või koodi voo juhtimisel sõltuvalt sellest, millist tüüpi objekti kasutatakse.

Koodi tüübi kontrollimiseks kasutamine

Me saame kasutada funktsiooni TypeOf tagamaks, et tehtud valik on konkreetse objekti tüüp, mida me vajame - näiteks võime soovida valida vahemiku ja seejärel kasutada IF -lauset, et näha, mis on valitud. Kui vahemik on valitud, siis saame teate, mis ütleb meile, et vahemik on valitud, kuid kui vahemikku ei valita, saame teistsuguse teate.

Valime oma töölehel mõned lahtrid.

Nüüd, kui käivitame alloleva makro, öeldakse meile, et valisime vahemiku.

12345678 Alamkatse valik ()Dim rng kui objektKui tüübi valik on vahemik, siisMsgBox "Vahemik on valitud!"MuiduMsgBox "Valitud on midagi muud"Lõpp KuiEnd Sub

Kui me aga ei vali vahemikku ja valime midagi muud - võib -olla diagrammi - ja seejärel käivitame makro, saame teistsuguse tulemuse!

TypeOfi kasutamine vormi juhtelementidel

VBA võimaldab meil luua interaktiivseid vorme, mida kasutaja saab täita ja tagastada andmed kasutatavale koodile mitmel viisil. Vormil kasutatavate juhtelementide tüübi määramiseks saame kasutada operaatorit TypeOf.

Allolevas näites olen loonud kasutajavormi, millel on mitmesugused juhtnupud - paar tekstikasti, liitkast, 2 valikunuppu, 2 märkeruutu ja 3 käsunuppu.

Kasutades allolevat koodi, saan kindlaks teha, millist tüüpi juhtelemendid vormil on, lugedes läbi kõik vormi juhtelemendid. Olen kasutanud funktsiooni TypeName juhtelemendi tüübiga teate saatmiseks ja kasutanud VBA IF avaldust, kasutades Funktsioon TypeOf et kontrollida, millist tüüpi juhtelementi on valitud, ja seejärel veel üks sõnumikast seda tüüpi juhtelemendi tagastamiseks.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl kui objektIga ctl In Me.Controls jaoksMsgBox (TypeName (ctl))'Objekti tüübi määramiseks kasutage funktsiooni TypeOf.Kui TypeOf ctl on msforms.TextBox SiisMsgBox ("Juhtelement on tekstikast.")Muul juhul, kui TypeOf ctl on msforms.ComboBox SiisMsgBox ("Juhtelement on kombineeritud kast".)Muul juhul, kui TypeOf ctl on msforms.Silt siisMsgBox ("Juhtelement on silt".)Muul juhul, kui TypeOf ctl on msforms.CommandButton ThenMsgBox ("Juhtimine on käsunupp.")Muul juhul, kui TypeOf ctl on msforms. Kontrollige seejärel kastiMsgBox ("Kontroll on märkeruut.")ElseIf TypeOf ctl Kas msforms.OptionButton ThenMsgBox ("Juhtimine on valik/raadionupp.")MuiduMsgBox ("Objekt on mõnda muud tüüpi juhtelement.")Lõpp KuiJärgmine ctlEnd Sub

Seda tüüpi kood võib olla väga kasulik, kui soovime juhtelemente lubada või keelata. Allolevas koodis on vormi esmakordsel avamisel valikunupud ja märkeruudud keelatud.

123456789101112 Privaatne alamkasutajaForm_Initialize ()Dim ctl kui objektIga ctl In Me.Controls jaoksKui TypeOf ctl on msforms.CheckBox Thenctl.Enabled = ValeElseIf TypeOf ctl Kas msforms.OptionButton Thenctl.Enabled = ValeMuiductl.Enabled = TõsiLõpp KuiJärgmine ctlEnd Sub

Valikunuppude ja märkeruutude lubamiseks olen kirjutanud nupu Luba juhtimine taha veel mõne koodi.

12345678910 Privaatne alam cmdEnable_Click ()Dim ctl kui objektIga ctl In Me.Controls jaoksKui TypeOf ctl on msforms.CheckBox Thenctl.Enabled = Pole ctl.LubatudElseIf TypeOf ctl Kas msforms.OptionButton Thenctl.Enabled = Pole ctl.LubatudLõpp KuiJärgmine ctlEnd Sub

Kui klõpsame nupul Luba juhtelemendid, siis kui juhtnupud on keelatud, muutuvad need lubatuks ja lubamise korral keelatakse. See saavutatakse, kasutades Mitte Operaator, mis võimaldab meil lülituda keelatud ja lubatud vahel.

wave wave wave wave wave