VBA loendikast - valitud üksus

See artikkel näitab, kuidas töötada Excel VBA loendiboksis valitud üksusega.

Loendibokse kasutatakse suures osas VBA vormides, kuid neid saab kasutada ka Exceli töölehel. Need näitavad kasutajatele valikute loendit, millest ühe või mitu saab kasutaja valida.

Loendiboksi loomine VBA vormis

Loendiboksi loomiseks VBA vormis peame esmalt looma UserFormi.

Kui olete vormi loonud, valige tööriistakastis loendiboksi juhtelement ja lohistage seejärel vormile loendiboks.

Väärtuste lisamine loendiboksi

Tippige vormi sündmuse Initsialiseerimine järgmine kood. Loendiboks võtab väärtused, mis on salvestatud teie Exceli töölehe lahtrivahemikku.

123456 Privaatne alamkasutajaForm_Initialize ()Dim rng As RangeIga vahemiku kohta ("A1: A50")Me.lstState.AddItem rng.ValueJärgmine rngEnd Sub

Vormi käivitamisel kuvatakse loendikast, nagu on näidatud alloleval pildil:

Väärtuste valimine loendiboksist

Vaikimisi saab kasutajavormis loendiboksis valida ühe väärtuse. Seda saab aga muuta, muutes loendiboksi atribuuti Multi-Select.

Selle valimiseks klõpsake loendiboksi ja seejärel atribuutide aknas muutke mitme valikuga atribuuti 0-frmMultiSelectSingle et 1-frmMultiSelectMulti.

Vormi käivitades saame loendiboksis valida rohkem kui ühe valiku.

Kui muudame võimaluse olla 2-frmMultiSelectExtended, see tähendab, et saame valida ühe väärtustest ja seejärel hoides all SHIFT klahvi, valige loendist mõni muu väärtus ja valitakse ka kõik valitud väärtuste vahelised üksused.

VBA programmeerimine | Koodigeneraator töötab teie jaoks!

Töö VBA valitud väärtustega

Sõltuvalt suvanditüübist, mida oleme loendiboksis mitme valiku atribuudi jaoks kasutanud, on VBA koodi loendiboksis valitud väärtust või väärtusi kasutada mitmel viisil.

Väärtuse määramine muutujale

Saame kasutada Pärast_värskendust loendiboksi sündmust, et määrata muutujale valitud väärtus.

Esiteks loome vormimooduli ülaossa mooduli taseme muutuja.

Sõnade all, Valik Selge, looge järgmine stringimuutuja.

1 Hämarda strState stringina.

Kui oleme selle muutuja loonud, saame topeltklõpsata kastil Loend, et minna vormi taga oleva koodi juurde, või klõpsata VBE redaktori koodinupul.

Loendiboksi klikisündmus luuakse automaatselt. Valige Pärast_värskendust Sündmus vormis saadaolevate protseduuride loend.

Tippige sündmusele After_Update järgmine kood:

123 Private Sub lstState_AfterUpdate ()strState = Me.lstStateEnd Sub

MÄRKUS. Klõpsu sündmuse saate kustutada, kuna see pole vajalik.

Kui nüüd käivitame vormi ja klõpsame loendikastil, salvestatakse valitud väärtus muutujale. Selle testimiseks võime koodi panna BREAK -punkti.

Kui me vormi käivitamisel loendikastil klõpsame, läheb kood DEBUG -režiimi ja peatub meie murdepunktis. Kui vajutame seejärel klaviatuuril klahvi F8, et koodis sammu võrra edasi liikuda, täidetakse muutuja loendis valitud üksusega.

Seda väärtust saame vaadata hiirega muutujale toetades.

VÕI

Väärtust saame vaadata kohe aknas.

Kas olete väsinud VBA koodinäidete otsimisest? Proovige AutoMacrot!

Väärtuse Excelisse tagastamiseks käsunupu kasutamine

Esiteks loome vormile käsunupu, et saada nupp OK, et loendiboksis valitud väärtus Excelisse tagasi saata.

Valige käsunupu juhtelement ja seejärel klõpsake nupu loomiseks oma vormil ja lohistage seda.

Muutke aknas Atribuudid nupu nimeks cmdOKja muutke nupu pealdist ja kiirendit.

Kiirendi eesmärk on, et kasutaja saaks antud juhul nupu aktiveerimiseks kasutada klaviatuuri Alt+O aktiveeriks nupu.

Selleks, et käsunupp toimiks, peame selle taha koodi lisama, et nupule klõpsates kood töötaks. Seda nimetatakse nupu klõpsamise sündmuseks.

Klikisündmusele pääsemiseks topeltklõpsake vormi kujundusvaates nuppu. Klikisündmus luuakse automaatselt, kuna seda sündmust kasutatakse kõige sagedamini käsunuppude jaoks.

Sisestage järgmine kood käsunupu klõpsamisüritusele.

123 Privaatne alam cmdOK_Click ()Vahemik ("E1") = strStateEnd Sub

Kood võtab üles muutuja, mille oleme deklareerinud ListBoxi sündmuses After_Update, ja tagastab väärtuse Excelis vahemikule.

Teise võimalusena saame väärtuse kätte otse loendikastist ilma muutujat kasutamata.

123 Privaatne alam cmdOK_Click ()Vahemik ("E1") = me.lstStateEnd Sub

Vormi käivitamisel tagastatakse valitud väärtus Excelile, kui klõpsame nuppu OK.

Mitme väärtuse valimine

Kui oleme loendiboksi mitme valiku atribuudiks seadnud 1 või 2, mis võimaldab meil loendist valida mitu väärtust, on nende väärtuste valimise kood pisut erinev.

The Pärast_värskendust loendiboksi väärtuste valimisel sündmust enam ei käivitata - seetõttu ei saa me seda sündmust kasutada.

Me võime endiselt kasutada käsunupu klõpsamise sündmust, kuid peame loendiboksis valitud väärtused silmusesse ajama, et need Excelisse tagasi saata.

Käsunupul Klõpsake sündmust, tippige järgmine kood.

12345678910 Privaatne alam cmdOK_Click ()Dim x täisarvunaVahemik ("E1"). ValigeX = 0 jaoks Me.lstState.ListCount - 1Kui Me.lstState.Selected (x) = Tõene siisActiveCell = Me.lstState.List (x)ActiveCell. Offset (1, 0). ValigeLõpp KuiJärgmine xEnd Sub

Vormi käivitamisel tagastatakse Exceli lehele ainult valitud väärtused.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave