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:
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.
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:
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.
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:
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:
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:
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:
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ů:
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:
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ů:
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.