/ / Excel VBA Multicolumn Combo Box

Excel VBA Multicolumn Combo Box

Nedenfor vil vi se på et program i Excel VBA som opretter en brugerformular, der indeholder en multikolonne kombinationsboks.

Brugerformularen, vi skal oprette, ser ud som følger:

Multikolonne kombinationsboks i Excel VBA

For at oprette denne brugerformular, udfør følgende trin.

1. Åbn Visual Basic Editor. Hvis Project Explorer ikke er synlig, skal du klikke på Vis, Project Explorer.

2. Klik på Indsæt, Brugerformular. Hvis værktøjskassen ikke vises automatisk, skal du klikke på Vis, Værktøjskasse. Din skærm skal opsættes som nedenfor.

Brugerform Screen Setup i Excel VBA

3. Tilføj etiketten, kombinationsboksen og kommandoknapperne. Når dette er gennemført, skal resultatet være i overensstemmelse med billedet af den tidligere viste brugerformular. For eksempel opret en kombinationsboks kontrol ved at klikke på ComboBox fra Toolbox. Derefter kan du trække en kombinationsboks på Brugerformularen.

4. Du kan ændre navnene og teksten på kontrollerne. Navne bruges i Excel VBA-koden. Undertekster er dem, der vises på din skærm. Det er god praksis at ændre navnene på kontrollerne, men det er ikke nødvendigt her, fordi vi kun har få kontroller i dette eksempel. Hvis du vil ændre billedteksten til Brugerform, etiket og kommandoknapper, skal du klikke på Vis, Egenskaber Vindue og klikke på hver kontrol.

5. For at vise brugerformularen skal du placere en kommandoknap på dit regneark og tilføje følgende kode linje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi skal nu oprette Sub UserForm_Initialize. Når du bruger visningsmetoden til brugerformularen, udføres denne under automatisk.

6. Åbn Visual Basic Editor.

7. I Project Explorer skal du højreklikke på UserForm1 og derefter klikke på View Code.

8. Vælg Brugerform fra den venstre rullemenu. Vælg Initialize fra den højre rulleliste.

9. Tilføj 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 kode linje angiver antallet af kolonner i kombinationsboksen til 2. I stedet for at indstille antallet af kolonner i løbetid, kan du også konfigurere denne indstilling ved designtid. For at opnå dette skal du højreklikke på kombinationsboksen, klikke på Egenskaber og indstille ColumnCount-ejendommen til 2. Derefter erklærer og initialiseres et todimensionelt array. Den sidste kode linje tildeler arrayet til kombinationsboksen.

Vi har nu oprettet den første del af brugerformularen. Selvom det ser pænt ud, sker der intet endnu, når vi klikker på kommandoknapperne på Brugerformularen.

10. Dobbeltklik på UserForm1 i Project Explorer.

11. Dobbeltklik på OK-knappen.

12. Tilføj følgende kode linjer:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

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

End Sub

Bemærk: Disse kode linjer lukker Excel VBA Brugerformular og viser det valgte element og genre. Udfaldet "På fejl fortsæt næste" ignorerer fejlen, når brugeren udfylder sin egen film (i dette tilfælde er der ingen genre tilgængelig).

13. Dobbeltklik på knappen Annuller.

14. Tilføj følgende kode linje:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultat, når du vælger Hastighed, og klik på OK.

Multikolonne kombinationsboks resultat

Multikolonne kombinationsboks resultat

Læs også: