/ / Flere listeboksvalg i Excel VBA

Flere listeboksvalg i Excel VBA

De MultiSelect eiendom i Excel VBA tillater en bruker å velge flere elementer i en listeboks. Brukerformen vi skal lage, ser ut som følger:

Flere listeboksvalg i Excel VBA

For å opprette denne brukerformen, utfør følgende trinn.

1. Åpne Visual Basic Editor. Hvis Project Explorer ikke er synlig, klikker du på Vis, Project Explorer.

2. Klikk på Sett inn, Brukerform. Hvis Verktøykassen ikke vises automatisk, klikker du på Vis, Verktøykasse. Skjermen din bør settes opp som nedenfor.

Userform Screen Setup i Excel VBA

3. Legg til listefeltene (først til venstre, det andre til høyre), kommandoknappene, merk av i boksene (først til venstre, det andre til høyre), rammen og alternativknappene (først øverst, den andre under den første , og så videre). Når dette er fullført, bør resultatet være i tråd med bildet av brukerformen som ble vist tidligere. For eksempel, opprett en listebokskontroll ved å klikke på ListBox fra Verktøykassen. Deretter kan du dra en listeboks på Brukerform. Når du kommer til "Select Type" -rammen, husk å tegne denne rammen først før du plasserer de tre alternativknappene i den.

4. Du kan endre navnene og bildeteksten til kontrollene. Navnene brukes i Excel VBA-koden. Undertekster er de som vises på skjermen. Det er god praksis å endre navnene på kontrollene, men det er ikke nødvendig her fordi vi bare har noen få kontroller i dette eksemplet. For å endre bildeteksten til brukerformat, kommandoknappene, kryss boksene, rammen og alternativknappene, klikk Vis, Egenskaper Vindu og klikk på hver kontroll.

5. For å vise brukerformatet, legg en kommandoknapp på regnearket og legg til følgende kodelinje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi skal nå lage Sub UserForm_Initialize. Når du bruker Show-metoden for brukerformularen, blir denne delen automatisk utført.

6. Åpne Visual Basic Editor.

7. I Project Explorer, høyreklikk på UserForm1 og klikk deretter Vis kode.

8. Først erklærer variabelen i av typen Integer. Erklær variabelen i delen Generelle deklarasjoner (øverst på koden). På denne måten må du kun deklarere variabelen en gang, og du kan bruke dem i flere subs.

Dim i As Integer

9. Velg Brukerform fra den venstre rullegardinlisten. Velg Initialize fra den høyre rullegardinlisten.

10. Legg til følgende kodelinjer:

Private Sub UserForm_Initialize()

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

OptionButton3.Value = True

End Sub

Forklaring: Den første listeboksen fylles ut og den tredje alternativknappen er angitt som standard.

Vi har nå opprettet den første delen av brukerformen. Selv om det ser pent ut, vil ingenting skje ennå når vi klikker på kommandoknappene eller de andre kontrollene.

11. Dobbeltklikk på UserForm1 i Project Explorer.

12. Dobbeltklikk på Add-knappen.

13. Legg til følgende kodelinjer:

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

Forklaring: Excel VBA løkker gjennom den første listeboksen (listindeksnummer på null (0) for det første elementet i listen) og, hvis det er valgt, legger elementet til den andre listeboksen.

14. Dobbeltklikk på Fjern-knappen.

15. Legg til følgende kodelinjer:

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

Forklaring: Excel VBA løkker gjennom den andre listeboksen, og hvis det er valgt, fjerner elementet. Tellervariabelen holder oversikt over antall fjernede elementer.

16. Dobbeltklikk på den første alternativknappen.

17. Legg til følgende kodelinjer:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Dobbeltklikk på den andre alternativknappen.

19. Legg til følgende kodelinjer:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Dobbeltklikk på den tredje alternativknappen.

21. Legg til følgende kodelinjer:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Forklaring: Innstillingen "Select Type" kan velges ved å klikke på alternativknappene. Bildet av brukerformet som er vist tidligere gir en beskrivelse av hver innstilling. I stedet for å konfigurere denne innstillingen ved kjøring, kan du også konfigurere denne innstillingen ved designtid. For å oppnå dette, høyreklikk på en listeboks-kontroll, og klikk deretter på Egenskaper. Sett MultiSelect-egenskapen til 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti eller 2 - fmMultiSelectExtented.

22. Dobbeltklikk på den første boksen.

23. Legg til følgende kodelinjer:

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

Forklaring: Ved å merke den første avmerkingsboksen, kan alle elementene i den første listeboksen velges / deaktivert.

24. Dobbeltklikk på den andre avmerkingsboksen for å legge til de samme kodelinjene. Bare erstatt CheckBox1 med CheckBox2 og ListBox1 med ListBox2.

Les også: