VBA Listbox - Valittu kohde

Tässä artikkelissa kerrotaan, miten voit työskennellä valitun kohteen kanssa Excel VBA: n luetteloruudussa.

Luetteloruutuja käytetään suurelta osin VBA -lomakkeissa, mutta niitä voidaan käyttää myös Excel -laskentataulukossa. Ne näyttävät käyttäjille luettelon vaihtoehdoista, joista yhden tai useamman käyttäjä voi valita.

Luetteloruudun luominen VBA -lomakkeessa

Jotta voimme luoda luetteloruudun VBA -lomakkeeseen, meidän on ensin luotava UserForm.

Kun olet luonut lomakkeen, valitse luetteloruudun ohjaus työkalupalkista ja luo sitten luetteloruutu vetämällä.

Arvojen lisääminen luetteloruutuun

Kirjoita lomakkeen Initialize -tapahtumaan seuraava koodi. Luetteloruutu poimii arvot, jotka on tallennettu Excel -laskentataulukon solualueeseen.

123456 Yksityinen alikäyttäjäForm_Initialize ()Dim rng as RangeJokaiselle alueen alueelle ("A1: A50")Me.lstState.AddItem rng.ValueSeuraava rngEnd Sub

Kun suoritamme lomakkeen, luetteloruutu näytetään alla olevan kuvan mukaisesti:

Arvojen valitseminen luetteloruudusta

Oletuksena yksittäinen arvo voidaan valita käyttäjäluettelon luetteloruudusta. Tätä voidaan kuitenkin muuttaa muuttamalla luetteloruudun Multi-Select -ominaisuutta.

Valitse luetteloluettelo napsauttamalla sitä ja muuta sitten Ominaisuudet-ikkunassa Monivalinta-ominaisuus 0-frmMultiSelectSingle kohteeseen 1-frmMultiSelectMulti.

Kun suoritamme lomaketta, voimme valita luetteloruudusta useamman kuin yhden vaihtoehdon.

Jos muutamme vaihtoehdon olla 2-frmMultiSelectExtended, se tarkoittaa, että voimme valita yhden arvoista ja sitten pitämällä SHIFT -näppäintä painettuna, valitse toinen arvo alempana luettelosta, ja myös kaikki valitun kahden arvon väliset kohteet valitaan.

VBA -ohjelmointi | Koodigeneraattori toimii sinulle!

Työskentely valittujen arvojen kanssa VBA: ssa

Luetteloruudun Multi-Select -ominaisuuden vaihtoehtojen tyypistä riippuen voimme käyttää useita tapoja käyttää VBA-koodin luetteloruudussa valittuja arvoja.

Arvon määrittäminen muuttujalle

Voimme käyttää Päivityksen jälkeen luetteloruudun tapahtuma, jolloin valittu arvo määritetään muuttujalle.

Luodaan ensin moduulitason muuttuja lomakemoduulin yläosaan.

Sanojen alla, Vaihtoehto Selkeä, luo seuraava merkkijonomuuttuja.

1 Himmennä strState merkkijonona.

Kun olemme luoneet tämän muuttujan, voimme kaksoisnapsauttaa Lista-ruutua siirtyäksesi lomakkeen takana olevaan koodiin tai napsauttaa VBE-editorin koodipainiketta.

Luetteloruudun napsautustapahtuma luodaan automaattisesti. Valitse Päivityksen jälkeen Tapahtuma lomake käytettävissä olevien menettelyjen luettelo.

Kirjoita After_Update -tapahtumaan seuraava koodi:

123 Yksityinen osa lstState_AfterUpdate ()strState = Me.lstStateEnd Sub

HUOMAUTUS: Voit poistaa Click -tapahtuman, koska sitä ei tarvita.

Jos nyt suoritamme lomakkeen ja napsautamme luetteloruutua, valittu arvo tallennetaan muuttujaan. Tämän testaamiseksi voimme laittaa koodiin BREAK -pisteen.

Nyt kun suoritamme lomaketta ja napsautamme luetteloruutua, koodi siirtyy DEBUG -tilaan ja pysähtyy taukoomme. Jos painamme näppäimistön F8 -näppäintä siirtyäksesi askeleen pidemmälle koodissa, muuttuja täytetään luettelon valitulla kohteella.

Voimme nähdä tämän arvon asettamalla hiiren muuttujan päälle.

TAI

Voimme nähdä arvon välittömässä ikkunassa.

Oletko kyllästynyt etsimään esimerkkejä VBA -koodista? Kokeile AutoMacroa!

Komentopainikkeen käyttäminen arvon palauttamiseen Exceliin

Ensinnäkin luomme lomakkeeseen komentopainikkeen, jotta OK -painike palauttaa luetteloruudusta valitun arvon tai arvot Exceliin.

Valitse komentopainikkeen ohjausobjekti ja luo sitten painike napsauttamalla ja vetämällä lomakkeessa.

Muuta Ominaisuudet -ikkunassa painikkeen nimeksi cmdOKja muuta painikkeen kuvatekstiä ja kiihdytintä.

Acceleratorin tarkoituksena on, että käyttäjä käyttää näppäimistöä painikkeen aktivoimiseen, tässä tapauksessa Alt+O. aktivoi painikkeen.

Jotta komentopainike toimisi, meidän on lisättävä koodi sen taakse niin, että kun painiketta napsautetaan, koodi suoritetaan. Tätä kutsutaan painikkeen napsautustapahtumaksi.

Pääset napsautustapahtumaan kaksoisnapsauttamalla painiketta lomakkeen suunnittelunäkymässä. Napsautustapahtuma luodaan automaattisesti, koska tätä tapahtumaa käytetään yleisimmin komentopainikkeissa.

Kirjoita seuraava koodi komentopainikkeen napsautustapahtumaan.

123 Yksityinen ali cmdOK_Click ()Alue ("E1") = strStateEnd Sub

Koodi noutaa ListBoxin After_Update -tapahtumassa ilmoittamamme muuttujan ja palauttaa arvon Excelin alueeseen.

Vaihtoehtoisesti voimme noutaa arvon suoraan luetteloruudusta ilman muuttujaa.

123 Yksityinen ali cmdOK_Click ()Alue ("E1") = me.lstStateEnd Sub

Kun suoritamme lomakkeen, valittu arvo palautetaan Exceliin, kun napsautamme OK -painiketta.

Useiden arvojen valitseminen

Jos olemme asettaneet luetteloruudun monivalintaominaisuuden arvoksi 1 tai 2, jonka avulla voimme valita useita arvoja luettelosta, näiden arvojen valintakoodi on hieman erilainen.

The Päivityksen jälkeen tapahtumaa ei enää käynnistetä, kun valitaan arvot luetteloruudusta - siksi emme voi käyttää tätä tapahtumaa.

Voimme edelleen käyttää komentopainikkeen napsautustapahtumaa, mutta meidän on kierrettävä luetteloruudussa valitut arvot palauttaaksemme ne Exceliin.

Kirjoita komentopainikkeeseen Napsauta tapahtumaa ja kirjoita seuraava koodi.

12345678910 Yksityinen ali cmdOK_Click ()Dim x kokonaislukunaAlue ("E1"). ValitseX = 0 Minulle.lstState.ListCount - 1Jos Me.lstState.Selected (x) = Tosi sittenActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0) ValitseLoppu JosSeuraava xEnd Sub

Kun suoritamme lomaketta, vain valitut arvot palautetaan Excel -taulukkoon.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave