VBA TypeOf

Tämä artikkeli osoittaa VBA TypeOf -operaattorin käytön.

VBA TypeOf -operaattoria käytetään määrittämään objektin tyyppi. Tämä voi olla hyödyllistä, kun otetaan käyttöön tai poistetaan käytöstä VBA -lomakkeen ohjaimet tai ohjataan koodin kulkua sen mukaan, minkä tyyppistä objektia käytetään.

TypeOf -koodin käyttäminen

Voimme käyttää TypeOfia varmistaaksemme, että tehty valinta on tarvitsemamme tietyn objektityypin tyyppi - esimerkiksi voimme halutessamme valita alueen ja käyttää sitten IF -lauseketta nähdäksemme, mikä on valittu. Jos alue on valittu, saamme viestin, jossa kerrotaan, että alue on valittu, mutta jos aluetta ei ole valittu, saamme toisen viestin.

Valitaan joitain soluja laskentataulukostamme.

Jos suoritamme alla olevan makron, meille kerrotaan, että valitsimme alueen.

12345678 Alatestivalinta ()Dim rng objektinaJos TypeOf -valinta on alue sittenMsgBox "Valikoima on valittu!"MuuMsgBox "Jotain muuta on valittu"Loppu JosEnd Sub

Jos emme kuitenkaan valitse aluetta ja valitse jotain muuta - ehkä kaaviota - ja suoritamme sitten makron, saamme erilaisen tuloksen!

TypeOfin käyttäminen lomakeohjaimissa

VBA: n avulla voimme luoda interaktiivisia lomakkeita, joita käyttäjä voi täyttää ja palauttaa tiedot käytettävään koodiin eri tavoin. Voimme käyttää TypeOf -operaattoria määrittämään lomakkeessa käytettävien ohjainten tyypin.

Alla olevassa esimerkissä olen luonut käyttäjälomakkeen, jossa on erilaisia ​​säätimiä - pari tekstiruutua, yhdistelmäruutu, 2 asetuspainiketta, 2 valintaruutua ja 3 komentopainiketta.

Käyttämällä alla olevaa koodia voin selvittää, millaisia ​​ohjaimia lomakkeessa on, selaamalla läpi kaikki lomakkeen ohjaimet. Olen käyttänyt TypeName -toimintoa viestin palauttamiseen ohjausobjektin tyypin kanssa ja käyttänyt VBA IF -lauseketta käyttämällä TypeOf -toiminto tarkista, minkä tyyppinen ohjausobjekti on valittu, ja sitten uusi sanomaruutu tämän tyyppisen ohjaimen palauttamiseksi.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl objektinaJokaiselle ctl In Me.ControlilleMsgBox (TypeName (ctl))'Käytä TypeOf -funktiota kohteen tyypin määrittämiseen.Jos TypeOf ctl on msforms.TextBox SittenMsgBox ("Ohjaus on TextBox".)ElseIf TypeOf ctl Onko msforms.ComboBox SittenMsgBox ("Ohjaus on yhdistelmälaatikko.")ElseIf TypeOf ctl Onko msforms.Label thenMsgBox ("Ohjaus on tarra.")ElseIf TypeOf ctl Onko msforms.CommandButton ThenMsgBox ("Ohjaus on komentopainike.")ElseIf TypeOf ctl on msforms.CheckBox thenMsgBox ("Ohjaus on valintaruutu.")ElseIf TypeOf ctl Onko msforms.OptionButton ThenMsgBox ("Ohjaus on lisä-/radiopainike.")MuuMsgBox ("Objekti on jonkin muun tyyppinen ohjaus.")Loppu JosSeuraava ctlEnd Sub

Tämäntyyppinen koodi voi olla erittäin hyödyllinen, jos haluamme ottaa ohjaukset käyttöön tai poistaa ne käytöstä. Alla olevassa koodissa, kun lomake avataan ensimmäisen kerran, valintapainikkeet ja valintaruudut ovat poissa käytöstä.

123456789101112 Yksityinen alikäyttäjäForm_Initialize ()Dim ctl objektinaJokaiselle ctl In Me.ControlilleJos TypeOf ctl on msforms.CheckBox thenctl.Enabled = VääräElseIf TypeOf ctl Onko msforms.OptionButton Thenctl.Enabled = VääräMuuctl.Enabled = TottaLoppu JosSeuraava ctlEnd Sub

Jos haluat ottaa käyttöön valintanapit ja valintaruudut, olen kirjoittanut jonkin lisäkoodin Ota ohjaimet käyttöön -painikkeen taakse.

12345678910 Yksityinen ali cmdEnable_Click ()Dim ctl objektinaJokaiselle ctl In Me.ControlilleJos TypeOf ctl on msforms.CheckBox thenctl.Enabled = Ei ctl.EnabledElseIf TypeOf ctl Onko msforms.OptionButton Thenctl.Enabled = Ei ctl.EnabledLoppu JosSeuraava ctlEnd Sub

Nyt kun napsautamme Ota ohjaimet käyttöön -painiketta, jos ohjaimet eivät ole käytössä, ne tulevat käyttöön ja jos ne ovat käytössä, ne poistetaan käytöstä. Tämä saavutetaan käyttämällä Ei Operaattori, jonka avulla voimme vaihtaa käytöstä poistetun ja käytössä olevan tilan välillä.

wave wave wave wave wave