/ / Excel VBA Multicolumn keuzelijst met invoervak

Excel VBA Multicolumn keuzelijst

Hieronder zullen we een programma bekijken in Excel VBA die een gebruikersformulier maakt met een multicolumn keuzelijst met invoervak.

Het Userform dat we gaan maken ziet er als volgt uit:

Multicolumn keuzelijst met invoervak ​​in Excel VBA

Om dit gebruikersformulier aan te maken, voert u de volgende stappen uit.

1. Open de Visual Basic-editor. Als de Projectverkenner niet zichtbaar is, klikt u op Beeld, Projectverkenner.

2. Klik op Invoegen, Gebruikersformulier. Als de Toolbox niet automatisch verschijnt, klikt u op Beeld, Werkset. Uw scherm moet worden ingesteld zoals hieronder.

Gebruikersformulier Scherminstellingen in Excel VBA

3. Voeg het label, de keuzelijst met invoervak ​​en de opdrachtknoppen toe. Zodra dit is voltooid, moet het resultaat consistent zijn met de afbeelding van het eerder weergegeven gebruikersformulier. Maak bijvoorbeeld een keuzelijst met invoervak ​​door in de werkset op ComboBox te klikken. Vervolgens kunt u een keuzelijst met invoervak ​​op het gebruikersformulier slepen.

4. U kunt de namen en bijschriften van de bedieningselementen wijzigen. Namen worden gebruikt in de Excel VBA-code. Onderschriften zijn diegene die op je scherm verschijnen. Het is een goede gewoonte om de namen van de besturingselementen te wijzigen, maar dit is hier niet nodig, omdat we in dit voorbeeld slechts enkele besturingselementen gebruiken. Als u het bijschrift van de knoppen Gebruikerform, label en opdracht wilt wijzigen, klikt u op Weergave, Venster Eigenschappen en klikt u op elk besturingselement.

5. Om het gebruikersformulier weer te geven, plaatst u een opdrachtknop op uw werkblad en voegt u de volgende coderegel toe:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

We gaan nu de Sub UserForm_Initialize maken. Wanneer u de methode Show voor het Userform gebruikt, wordt deze sub automatisch uitgevoerd.

6. Open de Visual Basic-editor.

7. Klik in de projectverkenner met de rechtermuisknop op UserForm1 en klik vervolgens op Code weergeven.

8. Kies Userform in de linker vervolgkeuzelijst. Kies Initialiseren in de vervolgkeuzelijst.

9. Voeg de volgende coderegels toe:

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

Uitleg: De eerste coderegel stelt het aantal kolommen van de keuzelijst in op 2. In plaats van het aantal kolommen tijdens runtime in te stellen, kunt u deze instelling ook tijdens de ontwerpfase configureren. Klik hiervoor met de rechtermuisknop op het besturingselement keuzelijst, klik op Eigenschappen en stel de eigenschap ColumnCount in op 2. Vervolgens declareren en initialiseren we een tweedimensionale array. De laatste coderegel wijst de array toe aan de keuzelijst met invoervak.

We hebben nu het eerste deel van het gebruikersformulier gemaakt. Hoewel het er al goed uitziet, zal er nog niets gebeuren als we op de opdrachtknoppen op het gebruikersformulier klikken.

10. Dubbelklik in de projectverkenner op UserForm1.

11. Dubbelklik op de knop OK.

12. Voeg de volgende coderegels toe:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

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

End Sub

Notitie: deze coderegels sluiten het Excel VBA-gebruikersformulier en geven het geselecteerde item en genre weer. De instructie "On Error Resume Next" negeert de fout wanneer de gebruiker zijn / haar eigen film invult (in dit geval is er geen genre beschikbaar).

13. Dubbelklik op de knop Annuleren.

14. Voeg de volgende coderegel toe:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultaat wanneer u Snelheid selecteert en op OK klikt.

Multicolumn Combo Box-resultaat

Multicolumn Combo Box-resultaat

Lees ook: