Vrsta VBA Izv

Ta članek bo prikazal uporabo operaterja VBA TypeOf.

Operator VBA TypeOf se uporablja pri določanju vrste predmeta. To je lahko koristno pri omogočanju ali onemogočanju kontrol na obrazcu VBA ali za nadzor toka kode, odvisno od vrste predmeta, ki se uporablja.

Uporaba TypeOf za nadzor kode

Z TypeOf lahko zagotovimo, da je izbrana vrsta določenega predmeta, ki ga potrebujemo - na primer, morda želimo izbrati obseg in nato z uporabo stavka IF videti, kaj je izbrano. Če je izbran obseg, bomo prejeli sporočilo, da je izbran obseg, če pa obseg ni izbran, bomo dobili drugo sporočilo.

Izberimo nekaj celic na svojem delovnem listu.

Če zaženemo spodnji makro, nam bo povedano, da smo izbrali obseg.

12345678 Sub TestSelection ()Zatemni kot objektČe je vrsta izbire obseg, potemMsgBox "Izbran je obseg!"Sicer paMsgBox "Izbrano je nekaj drugega"Konec ČeEnd Sub

Če pa ne izberemo obsega in izberemo kaj drugega - morda grafikona - in nato zaženemo makro, bomo dobili drugačen rezultat!

Uporaba TypeOf pri kontrolnikih obrazcev

VBA nam omogoča ustvarjanje interaktivnih obrazcev, ki jih lahko uporabnik izpolni in podatke vrne v kodo za različne načine. Za določitev vrste kontrol, ki se uporabljajo na obrazcu, lahko uporabimo operater TypeOf.

V spodnjem primeru sem ustvaril uporabniški obrazec z različnimi kontrolniki - nekaj besedilnih polj, kombinirano polje, 2 gumba z možnostmi, 2 potrditvena polja in 3 ukazne gumbe.

Z uporabo spodnje kode lahko določim, kakšne vrste kontrolnikov so na obrazcu, tako da pregledamo vse kontrole na obrazcu. Funkcijo TypeName sem uporabil za vrnitev sporočila z vrsto kontrolnika in uporabil stavek VBA IF z uporabo Vrsta funkcije , da preverite, kakšen tip nadzora je izbran, in nato še eno polje s sporočilom, da vrnete to vrsto nadzora.

12345678910111213141516171819202122 Sub WhatControlType ()Zatemni ctl kot objektZa vsak ctl v meni. NadzorMsgBox (Ime vrste (ctl))'S funkcijo TypeOf določite vrsto predmeta.Če je TypeOf ctl msforms.TextBox PotemMsgBox ("Kontrolnik je TextBox.")OstaloČe je TypeOf ctl msforms.ComboBox PotemMsgBox ("Kontrolnik je ComboBox.")ElseIf TypeOf ctl Is msforms.Label PotemMsgBox ("Kontrolnik je oznaka.")ElseIf TypeOf ctl Is msforms.CommandButton PotemMsgBox ("Nadzor je ukazni gumb.")ElseIf TypeOf ctl Is msforms.CheckBox PotemMsgBox ("Kontrolnik je potrditveno polje.")ElseIf TypeOf ctl Is msforms.OptionButton PotemMsgBox ("Nadzor je gumb za možnost/radio.")Sicer paMsgBox ("Objekt je druga vrsta nadzora.")Konec ČeNaslednji ctlEnd Sub

Ta vrsta kode je lahko zelo uporabna, če želimo omogočiti ali onemogočiti kontrole. V spodnji kodi so gumbi in potrditvena polja ob prvem odpiranju obrazca onemogočeni.

123456789101112 Zasebni podporabnikForm_Initialize ()Zatemni ctl kot objektZa vsak ctl v meni. NadzorČe je TypeOf ctl msforms.CheckBox Potemctl.Enabled = NapačnoElseIf TypeOf ctl Is msforms.OptionButton Potemctl.Enabled = NapačnoSicer pactl.Enabled = ResKonec ČeNaslednji ctlEnd Sub

Če želite omogočiti gumbe za izbiro možnosti in potrditvena polja, sem za gumbom Omogoči kontrole napisala še nekaj kode.

12345678910 Zasebna podrejena cmdEnable_Click ()Zatemni ctl kot objektZa vsak ctl v meni. NadzorČe je TypeOf ctl msforms.CheckBox Potemctl.Enabled = Ni ctl.EnabledElseIf TypeOf ctl Is msforms.OptionButton Potemctl.Enabled = Ni ctl.EnabledKonec ČeNaslednji ctlEnd Sub

Zdaj, ko kliknemo gumb Omogoči kontrole, če so kontrolniki onemogočeni, bodo postali omogočeni in če so omogočeni, bodo onemogočeni. To se doseže z uporabo Ne Operater, ki nam omogoča preklapljanje med onemogočeno in omogočeno.

wave wave wave wave wave