/ / Excel VBA Multicolumn Combo Box

Excel VBA Multicolumn Combo Box

Nedan ser vi på ett program i Excel VBA vilket skapar en användarform som innehåller en kombinationsbox med flera kolonner.

Användarformen vi ska skapa ser ut som följer:

Multicolumn Combo Box 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 etiketten, kombinationsrutan och kommandoknapparna. När detta har slutförts ska resultatet överensstämma med bilden av användarformen som visats tidigare. Skapa till exempel en kombinationsfältkontroll genom att klicka på ComboBox från Verktygslådan. Därefter kan du dra en kombinationsfält i användarformen.

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, etikett och kommandoknappar, 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. Välj Användarformulär i den nedrullningsbara listrutan. Välj Initialize från den högra rullgardinsmenyn.

9. Lägg till följande kodlinjer:

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

Förklaring: Den första kodlinjen anger antalet kolumner i kombinationsrutan till 2. Istället för att ange antalet kolumner vid körning kan du också konfigurera denna inställning vid designtiden. För att uppnå detta högerklickar du på kombinationsrutan, klickar på Egenskaper och ställer in egenskapen ColumnCount till 2. Nästa, deklarerar och initierar vi en tvådimensionell array. Den sista kodlinjen tilldelar matrisen till kombinationsrutan.

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å kommandoknapparna på användarformuläret.

10. Dubbelklicka på UserForm1 i Project Explorer.

11. Dubbelklicka på OK-knappen.

12. Lägg till följande kodlinjer:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

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

End Sub

Notera: Dessa kodlinjer stänger Excel VBA Userform och visar det valda objektet och genren. Fönstret "Vid felupprepa nästa" ignorerar felet när användaren fyller i sin egen film (i det här fallet finns ingen genre tillgänglig).

13. Dubbelklicka på Avbryt-knappen.

14. Lägg till följande kodrad:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultat när du väljer Hastighet och klicka på OK.

Multicolumn Combo Box Resultat

Multicolumn Combo Box Resultat

Läs också: