VBA Listbox - Kiválasztott elem

Ez a cikk bemutatja, hogyan kell dolgozni a kiválasztott elemmel egy listamezőben az Excel VBA -ban.

A listamezőket nagyrészt VBA űrlapokon használják, de az Excel munkalapon is használhatók. Az opciók listáját jelenítik meg a felhasználóknak, amelyek közül egyet vagy többet a felhasználó választhat ki.

Lista mező létrehozása VBA formában

Ahhoz, hogy egy VBA -űrlapon listát hozzunk létre, először létre kell hoznunk a UserForm -ot.

Miután létrehozta az űrlapot, válassza ki a Lista doboz vezérlőt az eszköztárban, majd húzással hozzon létre egy listamezőt az űrlapon.

Értékek hozzáadása a listamezőhöz

Az űrlap Initialize eseményébe írja be a következő kódot. A Lista mező felveszi az Excel munkalap cellatartományában tárolt értékeket.

123456 Privát alfelhasználóForm_Initialize ()Dim rng mint tartományMinden tartományban ("A1: A50")Me.lstState.AddItem rng.ValueKövetkező rngEnd Sub

Az űrlap futtatásakor a lista mező az alábbi képen látható módon jelenik meg:

Értékek kiválasztása a listamezőből

Alapértelmezés szerint egyetlen érték választható ki egy Lista mezőben felhasználói formában. Ez azonban módosítható a listamező Multi-Select tulajdonságának megváltoztatásával.

Kattintson a listamezőre annak kiválasztásához, majd a Tulajdonságok ablakban módosítsa a Többszörös kijelölés tulajdonságot 0-frmMultiSelectSingle nak nek 1-frmMultiSelectMulti.

Most, amikor futtatjuk az űrlapot, a Lista mezőben több lehetőséget is kiválaszthatunk.

Ha megváltoztatjuk a lehetőséget 2-frmMultiSelectExtended, ez azt jelenti, hogy kiválaszthatjuk az értékek egyikét, majd tartsa lenyomva a SHIFT billentyűt, válasszon másik értéket a listán lejjebb, és a 2 kiválasztott érték közötti összes tétel is kijelölésre kerül.

VBA programozás | A kódgenerátor működik az Ön számára!

A kiválasztott értékekkel való munka a VBA -ban

Attól függően, hogy milyen opciót használtunk a listabeli Multi-Select tulajdonsághoz, számos módon használhatjuk a VBA Code listában kiválasztott értéket.

Az érték hozzárendelése egy változóhoz

Használhatjuk a After_Update a listamező eseménye a kiválasztott érték hozzárendeléséhez egy változóhoz.

Először hozzunk létre egy modulszintű változót az űrlapmodul tetején.

A szavak alatt, Explicit lehetőség, hozza létre a következő karakterlánc -változót.

1 Dim strState mint karakterlánc.

Miután létrehoztuk ezt a változót, duplán kattintva a Lista mezőre juthatunk az űrlap mögötti kódhoz, vagy rákattinthatunk a VBE szerkesztő kód gombjára.

A listamező kattintási eseménye automatikusan létrejön. Válaszd ki a After_Update Esemény az elérhető eljárások listájából.

Az After_Update eseménybe írja be a következő kódot:

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

MEGJEGYZÉS: Törölheti a Kattintási eseményt, mivel az nem kötelező.

Ha most futtatjuk az űrlapot, és rákattintunk a listamezőre, a kiválasztott érték a változóban tárolódik. Ennek teszteléséhez tehetünk egy BREAK pontot a kódba.

Most, amikor az űrlapot futtatjuk, ha rákattintunk a listamezőre, a kód DEBUG módba lép, és megáll a töréspontunknál. Ha ezután megnyomjuk az F8 billentyűt a billentyűzeten, hogy egy lépéssel tovább lépjünk a kódban, akkor a változó a lista kiválasztott elemével lesz feltöltve.

Ezt az értéket úgy tekinthetjük meg, ha az egeret a változóra helyezzük.

VAGY

Az értéket az Azonnali ablakban tekinthetjük meg.

Unod már a VBA kódpéldák keresését? Próbálja ki az AutoMacro -t!

Parancsgomb használatával visszaadhatja az értéket az Excelbe

Először létrehozunk egy parancsgombot az űrlapon annak érdekében, hogy legyen egy OK gomb, amely visszaadja a listamezőben kiválasztott értéket az Excel számára.

Válassza ki a Parancsgomb vezérlőt, majd kattintson és húzza az űrlapon a gomb létrehozásához.

A Tulajdonságok ablakban módosítsa a gomb nevét erre cmdOK, és módosítsa a gomb Feliratát és gyorsítóját.

A gyorsító célja, hogy a felhasználó ebben az esetben a billentyűzet segítségével aktiválja a gombot Alt+O aktiválná a gombot.

A parancsgomb működéséhez kódot kell adnunk mögé, hogy a gombra kattintva a kód fusson. Ezt hívják a gomb kattintási eseményének.

A kattintási esemény eléréséhez kattintson duplán a gombra az űrlap tervezési nézetében. A kattintási esemény automatikusan létrejön, mivel ezt az eseményt használják leggyakrabban a Command gombokhoz.

Írja be a következő kódot a parancsgomb kattintási eseményébe.

123 Privát al cmdOK_Click ()Tartomány ("E1") = strStateEnd Sub

A kód felveszi a ListBox After_Update eseményében deklarált változót, és visszaadja az értéket az Excel tartományába.

Alternatívaként, az értéket közvetlenül a Lista mezőből vehetjük fel, változó használata nélkül.

123 Privát al cmdOK_Click ()Tartomány ("E1") = me.lstStateEnd Sub

Az űrlap futtatásakor a kiválasztott érték visszatér az Excel -be, amikor az OK gombra kattintunk.

Több érték kiválasztása

Ha a listamező több kijelölési tulajdonságát 1-re vagy 2-re állítottuk, amely lehetővé teszi számunkra, hogy több értéket válasszunk ki a listából, akkor ezeknek az értékeknek a kiválasztására szolgáló kód kissé eltér.

Az After_Update Az esemény már nem indul el a listamezőben lévő értékek kiválasztásakor - ezért nem használhatjuk ezt az eseményt.

Továbbra is használhatjuk a parancsgomb kattintási eseményét, de át kell tekintenünk a listamezőben kiválasztott értékeket, hogy vissza tudjuk őket adni az Excelbe.

A parancsgombban kattintson az esemény gombra, írja be a következő kódot.

12345678910 Privát al cmdOK_Click ()Dim x Mint egészTartomány ("E1"). Válassza kiX = 0 esetén Nekem.lstState.ListCount - 1Ha Me.lstState.Selected (x) = Igaz akkorActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0). Válassza kiVége HaKövetkező xEnd Sub

Most, amikor az űrlapot futtatjuk, csak a kijelölt értékek kerülnek vissza az Excel -lapra.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave