Š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ą.