VBA Listbox - vybraná položka

Tento článek předvede, jak pracovat s vybranou položkou v seznamu v aplikaci Excel VBA.

Krabice se seznamem se z velké části používají ve formulářích VBA, ale lze je použít také v listu aplikace Excel. Ukazují uživatelům seznam možností, z nichž si může uživatel vybrat jednu nebo více.

Vytvoření seznamu ve formuláři VBA

Chcete -li vytvořit seznam ve formuláři VBA, musíme nejprve vytvořit UserForm.

Jakmile vytvoříte formulář, vyberte v panelu nástrojů ovládací prvek Seznam a přetažením vytvořte ve formuláři pole se seznamem.

Přidání hodnot do seznamu

Do události Initialize formuláře zadejte následující kód. Pole se seznamem vyzvedne hodnoty, které jsou uloženy v oblasti buněk v listu aplikace Excel.

123456 Private Sub UserForm_Initialize ()Dim rng As RangePro každý rozsah v rozsahu („A1: A50“)Me.lstState.AddItem rng.ValueDalší rngEnd Sub

Když spustíme formulář, zobrazí se pole se seznamem, jak ukazuje následující obrázek:

Výběr hodnot ze seznamu

Ve výchozím nastavení lze v seznamu vybrat v uživatelském formuláři jednu hodnotu. To však lze změnit změnou vlastnosti Multi-Select v seznamu.

Kliknutím na pole seznamu jej vyberte a poté v okně Vlastnosti změňte vlastnost Multi-Select z 0-frmMultiSelectSingle na 1-frmMultiVyberteMulti.

Když nyní spustíme formulář, můžeme v seznamu vybrat více než jednu možnost.

Pokud změníme možnost na 2-frmMultiSelectExtended, to znamená, že můžeme vybrat jednu z hodnot a poté, podržením klávesy SHIFT, vyberte další hodnotu dále v seznamu a také budou vybrány všechny položky mezi 2 vybranými hodnotami.

Programování VBA | Generátor kódu pracuje pro vás!

Práce s vybranými hodnotami ve VBA

V závislosti na typu možnosti, kterou jsme použili pro vlastnost Multi-Select v seznamu, existuje několik způsobů, jak můžeme použít hodnotu nebo hodnoty vybrané v seznamu v kódu VBA.

Přiřazení hodnoty proměnné

Můžeme použít After_Update událost ze seznamu pro přiřazení hodnoty vybrané proměnné.

Za prvé, vytvořme proměnnou na úrovni modulu v horní části modulu formuláře.

Pod slovy, Možnost Explicitní, vytvořte následující řetězcovou proměnnou.

1 Dim strState jako řetězec.

Jakmile tuto proměnnou vytvoříme, můžeme poklepáním na pole Seznam přejít na kód za formulářem, nebo můžeme kliknout na tlačítko kódu v editoru VBE.

V seznamu se automaticky vytvoří událost Click. Vybrat After_Update Událost tvoří seznam dostupných procedur.

V události After_Update zadejte následující kód:

123 Soukromý pod lstState_AfterUpdate ()strState = Me.lstStateEnd Sub

POZNÁMKA: Událost Click můžete odstranit, protože není vyžadována.

Pokud nyní spustíme formulář a klikneme na pole se seznamem, vybraná hodnota se uloží do proměnné. Chcete -li to otestovat, můžeme do kódu vložit bod BREAK.

Když nyní spustíme formulář, klikneme -li na pole se seznamem, kód přejde do režimu DEBUG a zastaví se v bodě přerušení. Pokud poté na klávesnici stiskneme klávesu F8, abychom se v kódu posunuli o krok dále, proměnná se naplní vybranou položkou v seznamu.

Tuto hodnotu můžeme zobrazit umístěním myši na proměnnou.

NEBO

Hodnotu můžeme zobrazit v Okamžitém okně.

Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!

Pomocí příkazového tlačítka vrátíte hodnotu do Excelu

Nejprve ve formuláři vytvoříme příkazové tlačítko, abychom měli tlačítko OK pro vrácení hodnoty nebo hodnot vybraných v seznamu do Excelu.

Vyberte ovládací prvek Příkazové tlačítko a potom kliknutím a přetažením ve formuláři vytvořte tlačítko.

V okně Vlastnosti změňte název tlačítka na cmdOKa změňte Titulek a Akcelerátor tlačítka.

Účelem akcelerátoru je, aby v tomto případě uživatel použil klávesnici k aktivaci tlačítka Alt+O by aktivovalo tlačítko.

Aby příkazové tlačítko fungovalo, musíme za něj přidat kód, aby se po kliknutí na tlačítko kód spustil. Toto se nazývá událost kliknutí tlačítka.

K události kliknutí se dostanete dvojitým kliknutím na tlačítko v návrhovém zobrazení formuláře. Událost kliknutí bude automaticky vytvořena, protože toto je událost, která se nejčastěji používá pro příkazová tlačítka.

Do události kliknutí příkazového tlačítka zadejte následující kód.

123 Soukromý sub cmdOK_Click ()Rozsah ("E1") = strStateEnd Sub

Kód vyzvedne proměnnou, kterou jsme deklarovali v události After_Update ListBoxu, a vrátí hodnotu Range v Excelu.

Alternativně můžeme hodnotu vyzvednout přímo ze seznamu bez použití proměnné.

123 Soukromý sub cmdOK_Click ()Rozsah ("E1") = me.lstStateEnd Sub

Když spustíme formulář, vybraná hodnota se vrátí do aplikace Excel, když klikneme na tlačítko OK.

Výběr více hodnot

Pokud jsme nastavili vlastnost vícenásobného výběru v seznamu na 1 nebo 2, což nám umožňuje vybrat více hodnot v seznamu, pak se kód pro výběr těchto hodnot mírně liší.

The After_Update událost se již při výběru hodnot v seznamu nespouští - tuto událost proto nemůžeme použít.

Stále můžeme použít událost kliknutí na příkazové tlačítko, ale musíme vrátit hodnoty vybrané v seznamu, abychom je mohli vrátit do Excelu.

Do příkazového tlačítka Click událost zadejte následující kód.

12345678910 Soukromý sub cmdOK_Click ()Dim x As IntegerRozsah („E1“). VybertePro x = 0 To Me.lstState.ListCount - 1Pokud Me.lstState.Selected (x) = True ThenActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0). VyberteKonec IfDalší xEnd Sub

Když nyní spustíme formulář, budou do listu aplikace Excel vráceny pouze vybrané hodnoty.

wave wave wave wave wave