/ / Excel VBA Multicolumn Combo Box

Excel VBA Multicolumn Combo Box

Nedenfor ser vi på et program i Excel VBA som skaper en brukerform som inneholder en multikolonne kombinationsboks.

Brukerformen vi skal lage, ser ut som følger:

Multikolonne kombinasjonsboksen 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 etiketten, kombinationsboksen og kommandoknappene. 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 kombinasjonsbokskontroll ved å klikke på ComboBox fra Verktøykassen. Deretter kan du dra en kombinasjonsboks på brukerformen.

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. Hvis du vil endre bildeteksten til brukerformat, etikett og kommandoknapper, klikker du Vis, Egenskaper Vindu og klikker 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. Velg Brukerform fra den venstre rullegardinlisten. Velg Initialize fra den høyre rullegardinlisten.

9. Legg til følgende kodelinjer:

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

Forklaring: Den første kodelinjen setter antall kolonner i kombinationsboksen til 2. I stedet for å angi antall kolonner ved kjøring, kan du også konfigurere denne innstillingen ved designtid. For å oppnå dette, høyreklikk på kombinasjonsboksen kontroll, klikk Egenskaper og sett egenskapen ColumnCount til 2. Deretter erklærer og initialiserer vi et todimensjonalt array. Den siste kode linjen tilordner arrayet til kombinasjonsboksen.

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 i brukerformen.

10. Dobbeltklikk på UserForm1 i Project Explorer.

11. Dobbeltklikk på OK-knappen.

12. Legg til følgende kodelinjer:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next
MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

Merk: Disse kodelinjene lukker Excel VBA Userform og viser det valgte elementet og sjangeren. "På feil fortsette neste" setningen ignorerer feilen når brukeren fyller inn sin egen film (i dette tilfellet er det ingen sjanger tilgjengelig).

13. Dobbeltklikk på Avbryt-knappen.

14. Legg til følgende kodelinje:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultat når du velger Hastighet og klikker OK.

Multicolumn Combo Box Resultat

Multicolumn Combo Box Resultat

Les også: