/ / Výběr více voleb seznamu v aplikaci Excel VBA

Výběr více voleb seznamu v aplikaci Excel VBA

The Vlastnost MultiSelect v Excel VBA umožňuje uživateli vybrat několik položek v seznamu. Uživatelský formulář, který vytvoříme, vypadá takto:

Výběr více voleb seznamu v aplikaci Excel VBA

Chcete-li vytvořit tento Userform, proveďte následující kroky.

1. Otevřete editor jazyka. Pokud aplikace Project Explorer není viditelná, klepněte na tlačítko Zobrazit, Project Explorer.

2. Klepněte na tlačítko Vložit, Formát uživatele. Pokud se panel nástrojů nezobrazí automaticky, klikněte na tlačítko Zobrazit, panel nástrojů. Vaše obrazovka by měla být nastavena níže.

Uživatelské nastavení obrazovky v aplikaci Excel VBA

3. Přidejte seznamy (nejprve vlevo, druhý vpravo), příkazová tlačítka, zaškrtávací políčka (nejprve vlevo, druhá vpravo), rámeček a volitelná tlačítka (nejprve v horní části, druhá pod první , a tak dále). Jakmile je tento postup dokončen, výsledek by měl být v souladu s obrázkem výše uvedeného formuláře User. Vytvořte například ovládací prvek seznamu kliknutím na seznam v panelu nástrojů. Dále můžete přetáhnout seznam do pole Userform. Když se dostanete do rámce "Vybrat typ", nezapomeňte nakreslit tento rámeček nejdříve, než umístíte do něj tři tlačítka.

4. Můžete změnit názvy a popisy ovládacích prvků. Jména jsou používána v kódu VBA aplikace Excel. Titulky jsou ty, které se zobrazují na obrazovce. Je dobré změnit názvy ovládacích prvků, ale není to nutné, protože v tomto příkladu máme jen několik ovládacích prvků. Chcete-li změnit popis Uživatelského formátu, příkazové tlačítka, zaškrtávací políčka, rámeček a volby, klepněte na tlačítko Zobrazit, okno Vlastnosti a klepněte na každý ovládací prvek.

5. Chcete-li zobrazit Userform, umístěte příkazové tlačítko na pracovní list a přidejte následující řádek:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Nyní vytvoříme Sub UserForm_Initialize. Pokud použijete metodu Show for Userform, bude automaticky provedena tato položka.

6. Otevřete editor jazyka.

7. V Průzkumníku projektu klepněte pravým tlačítkem na UserForm1 a potom klepněte na tlačítko Zobrazit kód.

8. Nejprve deklarujte proměnnou i typu Integer. Deklarujte proměnnou v části Obecné deklarace (v horní části kódu). Tímto způsobem stačí prohlásit proměnnou pouze jednou a můžete ji použít ve více submenách.

Dim i As Integer

9. V levém rozevíracím seznamu zvolte Formulář uživatele. V pravém rozevíracím seznamu vyberte příkaz Inicializovat.

10. Přidejte následující řádky kódu:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Vysvětlení: první seznam se vyplní a třetí tlačítko se nastaví jako výchozí.

Nyní jsme vytvořili první část Userform. Ačkoli to vypadá dobře, nic se nestane, když klikneme na příkazová tlačítka nebo na ostatní ovládací prvky.

11. V aplikaci Project Explorer poklepejte na UserForm1.

12. Dvakrát klikněte na tlačítko Přidat.

13. Přidejte následující řádky kódu:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Vysvětlení: Program Excel VBA přejde do prvního seznamu (indexové číslo seznamu 0 (první položka v seznamu)) a pokud je vybráno, přidá položku do druhého seznamu.

14. Dvakrát klikněte na tlačítko Odstranit.

15. Přidejte následující řádky kódu:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Vysvětlení: Aplikace Excel VBA přechází přes druhé seznam a pokud je vybrána, odebere položku. Proměnná čítače zaznamenává počet odebraných položek.

16. Dvakrát klikněte na první volbu.

17. Přidejte následující řádky kódu:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Dvakrát klikněte na druhé tlačítko.

19. Přidejte následující řádky kódů:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Dvakrát klikněte na třetí tlačítko.

21. Přidejte následující řádky kódu:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Vysvětlení: Nastavení "Vybrat typ" lze zvolit kliknutím na tlačítka možností. Obrázek obrázkuformátu zobrazeného výše poskytuje popis jednotlivých nastavení. Namísto konfigurace tohoto nastavení za běhu můžete také toto nastavení nakonfigurovat v době návrhu. Chcete-li to dosáhnout, klepněte pravým tlačítkem myši na ovládací prvek seznamu a potom klepněte na příkaz Vlastnosti. Nastavte vlastnost MultiSelect na 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti nebo 2 - fmMultiSelectExtented.

22. Dvakrát klikněte na první zaškrtávací políčko.

23. Přidejte následující řádky kódů:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Vysvětlení: zaškrtnutím prvního políčka můžete vybrat nebo zrušit výběr všech položek prvního seznamu.

24. Klepnutím na druhé zaškrtávací políčko přidejte stejné řádky kódu. Nahraďte pouze CheckBox1 s CheckBox2 a ListBox1 s ListBox2.

Také si přečtěte: