/ / Val av flera listrutor i Excel VBA

Val av flera listrutor i Excel VBA

De MultiSelect egenskap i Excel VBA tillåter en användare att välja flera objekt i en listruta. Användarformen vi ska skapa ser ut som följer:

Val av flera listrutor i Excel VBA

För att skapa detta användarformulär, utför följande steg.

1. Öppna Visual Basic Editor. Om Project Explorer inte är synligt klickar du på Visa, Project Explorer.

2. Klicka på Insert, Userform. Om Verktygslådan inte visas automatiskt klickar du på Visa, Verktygslåda. Din skärm bör ställas in enligt nedan.

Userform Screen Setup i Excel VBA

3. Lägg till listrutorna (först till vänster, andra till höger), kommandoknappar, kryssrutor (först till vänster, andra till höger), ram och alternativknappar (först överst, den andra under den första , och så vidare). När detta har slutförts ska resultatet överensstämma med bilden av användarformen som visats tidigare. Skapa till exempel en listrutekontroll genom att klicka på ListBox från Verktygslådan. Därefter kan du dra en listruta på användarformuläret. När du kommer fram till "Select Type" -ramen, kom ihåg att dra denna ram först innan du placerar de tre alternativknapparna i den.

4. Du kan ändra namn och bildtexter på kontrollerna. Namnen används i Excel VBA-koden. Bildtext är de som visas på din skärm. Det är bra att ändra namnen på kontrollerna, men det är inte nödvändigt här eftersom vi bara har några kontroller i det här exemplet. För att ändra bildtexten i användarformat, kommandoknappar, kryssrutor, ram och alternativknappar, klicka på Visa, Egenskaper fönstret och klicka på varje kontroll.

5. För att visa användarformen, placera en kommandoknapp på ditt arbetsblad och lägg till följande kodrad:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi ska nu skapa Sub UserForm_Initialize. När du använder Visa-metoden för användarformuläret utförs denna del automatiskt.

6. Öppna Visual Basic Editor.

7. I Project Explorer högerklickar du på UserForm1 och klickar sedan på Visa kod.

8. Förklara variabeln i av typen Integer. Förklara variabeln i avsnittet Allmänna förklaringar (längst upp i koden). På så sätt behöver du bara deklarera variabeln en gång och du kan använda dem i flera subs.

Dim i As Integer

9. Välj Användarformulär i den nedrullningsbara listrutan. Välj Initialize från den högra rullgardinsmenyn.

10. Lägg till följande kodlinjer:

Private Sub UserForm_Initialize()

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

OptionButton3.Value = True

End Sub

Förklaring: Den första listrutan fylls och den tredje alternativknappen är inställd som standard.

Vi har nu skapat den första delen av Userform. Även om det ser snyggt ut, kommer ingenting att hända ännu när vi klickar på kommandoknappar eller de andra kontrollerna.

11. Dubbelklicka på UserForm1 i Project Explorer.

12. Dubbelklicka på knappen Lägg till.

13. Lägg till följande kodlinjer:

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

Förklaring: Excel VBA-loopar genom den första listrutan (listindexnummer noll (0) för det första objektet i listan) och, om det är valt, lägger till objektet i den andra listrutan.

14. Dubbelklicka på knappen Ta bort.

15. Lägg till följande kodlinjer:

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

Förklaring: Lösningar i Excel VBA genom den andra listrutan och, om den väljs, tar bort objektet. Räknevariabeln spårar antalet borttagna objekt.

16. Dubbelklicka på den första alternativknappen.

17. Lägg till följande kodlinjer:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Dubbelklicka på den andra alternativknappen.

19. Lägg till följande kodlinjer:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Dubbelklicka på den tredje alternativknappen.

21. Lägg till följande kodlinjer:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Förklaring: Inställningen "Välj typ" kan väljas genom att klicka på alternativknapparna. Bilden av användarformen som visas tidigare ger en beskrivning av varje inställning. I stället för att konfigurera denna inställning vid körning kan du också konfigurera denna inställning vid designtiden. För att uppnå detta, högerklicka på en listrutekontroll och klicka sedan på Egenskaper. Ange MultiSelect-egenskapen till 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti eller 2 - fmMultiSelectExtented.

22. Dubbelklicka på den första kryssrutan.

23. Lägg till följande kodlinjer:

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

Förklaring: Genom att markera den första kryssrutan kan alla objekt i den första listrutan väljas / avmarkeras.

24. Dubbelklicka på den andra kryssrutan för att lägga till samma kodlinjer. Byt endast CheckBox1 med CheckBox2 och ListBox1 med ListBox2.

Läs också: