VBA tipas

Šiame straipsnyje bus parodytas VBA TypeOf operatoriaus naudojimas.

VBA TypeOf operatorius naudojamas nustatant objekto tipą. Tai gali būti naudinga įjungiant arba išjungiant valdiklius VBA formoje arba valdant kodo srautą, priklausomai nuo to, kokio tipo objektas naudojamas.

„TypeOf“ valdymas naudojant kodą

Mes galime naudoti „TypeOf“, kad užtikrintume, jog pasirinktas yra tam tikro objekto tipas, kurio mums reikia - pavyzdžiui, galbūt norime pasirinkti diapazoną ir tada naudoti IF sakinį, kad pamatytume, kas pasirinkta. Jei bus pasirinktas diapazonas, gausime pranešimą, nurodantį, kad diapazonas yra pasirinktas, tačiau jei diapazonas nebus pasirinktas, gausime kitą pranešimą.

Pasirinkite savo darbalapio langelius.

Dabar, jei paleisime toliau pateiktą makrokomandą, mums bus pasakyta, kad pasirinkome diapazoną.

12345678 Antrinis testas Pasirinkimas ()Dim rng kaip objektasJei „TypeOf“ pasirinkimas yra diapazonasMsgBox "Pasirinktas asortimentas!"Kitas„MsgBox“ „Pasirinktas kažkas kitas“Pabaiga JeiPabaiga Sub

Tačiau jei nepasirinksime diapazono ir nepasirinksime ko nors kito - galbūt diagramos - ir tada paleisime makrokomandą, gausime kitokį rezultatą!

„TypeOf“ naudojimas formų valdikliuose

VBA leidžia mums sukurti interaktyvias formas, kurias vartotojas gali užpildyti ir įvairiais būdais grąžinti duomenis į kodą. Mes galime naudoti „TypeOf“ operatorių, kad nustatytume valdiklių, naudojamų formoje, tipą.

Žemiau pateiktame pavyzdyje aš sukūriau vartotojo formą su įvairiais valdikliais - pora teksto laukelių, kombinuotas langelis, 2 parinkčių mygtukai, 2 žymės langeliai ir 3 komandų mygtukai.

Naudodamas toliau pateiktą kodą, galiu nustatyti, kokio tipo valdikliai yra formoje, peržiūrėdamas visus formos valdiklius. Naudojau funkciją „TypeName“, norėdamas grąžinti pranešimą su valdiklio tipu, ir naudoju VBA IF pareiškimą, naudodamas „TypeOf“ funkcija kad patikrintumėte, kokio tipo valdiklis yra pasirinktas, ir tada kitą pranešimų laukelį, kad grąžintumėte tokio tipo valdiklį.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl kaip objektasKiekvienam ctl In Me.Controls„MsgBox“ („TypeName“ (ctl))„Norėdami nustatyti objekto tipą, naudokite funkciją„ TypeOf “.Jei TypeOf ctl yra msforms.TextBox Tada„MsgBox“ („Valdiklis yra„ TextBox “.“)ElseIf TypeOf ctl Ar msforms.ComboBox Tada„MsgBox“ („Valdymas yra kombinuotas langelis“).ElseIf TypeOf ctl Ar msforms.Label Tada„MsgBox“ („Valdiklis yra etiketė“).ElseIf TypeOf ctl Ar msforms.CommandButton Tada„MsgBox“ („Valdymas yra komandinis mygtukas“).ElseIf TypeOf ctl yra msforms. Patikrinkite langelį Tada„MsgBox“ („Valdymas yra žymimasis langelis“).ElseIf TypeOf ctl Ar msforms.OptionButton Tada„MsgBox“ („Valdymas yra pasirinkimo/radijo mygtukas“.)Kitas„MsgBox“ („Objektas yra kito tipo valdymas“.)Pabaiga JeiKitas ctlPabaiga Sub

Šio tipo kodas gali būti labai naudingas, jei norime įjungti arba išjungti valdiklius. Žemiau esančiame kode, pirmą kartą atidarius formą, parinkčių mygtukai ir žymės langeliai yra išjungti.

123456789101112 Privatus antrinis vartotojasForm_Initialize ()Dim ctl kaip objektasKiekvienam ctl In Me.ControlsJei „TypeOf ctl“ yra „msforms“. Patikrinkite laukelį Tadactl.Enabled = NetiesaElseIf TypeOf ctl Ar msforms.OptionButton Tadactl.Enabled = NetiesaKitasctl.Enabled = TiesaPabaiga JeiKitas ctlPabaiga Sub

Norėdami įjungti parinkčių mygtukus ir žymimuosius laukelius, už mygtuko Įgalinti valdiklius parašiau dar vieną kodą.

12345678910 Privatus antrinis cmdEnable_Click ()Dim ctl kaip objektasKiekvienam ctl In Me.ControlsJei „TypeOf ctl“ yra „msforms“. Patikrinkite laukelį Tadactl.Enabled = Ne ctl.EnabledElseIf TypeOf ctl Ar msforms.OptionButton Tadactl.Enabled = Ne ctl.EnabledPabaiga JeiKitas ctlPabaiga Sub

Dabar, kai spustelėsime mygtuką Įgalinti valdiklius, jei valdikliai bus išjungti, jie bus įjungti, o jei bus įjungti, jie bus išjungti. Tai pasiekiama naudojant Ne Operatorius, kuris leidžia mums perjungti išjungtą ir įjungtą.

wave wave wave wave wave