Hoe dynamische cascaderende lijstvakken maken in Excel?
U weet misschien hoe u een cascaderende validatie-keuzelijst kunt maken in Excel. Maar hoe maakt u dynamische cascaderende lijstvakken in Excel? Dit artikel introduceert een VBA-methode om dit te bereiken.
Dynamische cascaderende lijstvakken maken met VBA-code
Dynamische cascaderende lijstvakken maken met VBA-code
Zoals in onderstaande schermafbeelding te zien is, moet u een bovenliggend lijstvak maken dat de unieke waarden van de kolom Drink bevat en alle bijbehorende waarden in het tweede lijstvak weergeven op basis van de selectie in het bovenliggende lijstvak. De volgende VBA-code helpt u dit te bereiken. Volg deze stappen.
1. Ten eerste moet u alle unieke waarden uit de kolom Drink extraheren. Selecteer een lege cel, voer de matrixformule =ALS.FOUT(INDEX($A$2:$A$11; VERGELIJKEN(0;AANTAL.ALS($J$1:J1; $A$2:$A$11); 0));"") in de Formulebalk in en druk vervolgens op Ctrl + Shift + Enter. Sleep daarna het Vulhandvat naar beneden om alle unieke waarden te krijgen. Zie onderstaande schermafbeelding:
Opmerking: In de formule is $A$2:$A$11 het bereik waaruit u unieke waarden wilt extraheren. J1 is de cel boven waar uw formule zich bevindt.
Tip: Als de formule te moeilijk is om te onthouden en te gebruiken, dan is de functie Dubbele & Unieke Cellen Selecteren van Kutools voor Excel een goede keuze om snel alle unieke waarden uit een kolom te extraheren.
Selecteer de kolom die de unieke waarden bevat die u wilt extraheren. Activeer vervolgens het hulpprogramma door te klikken op Kutools > Selecteren > Dubbele & Unieke Cellen Selecteren. In het dialoogvenster Dubbele & Unieke Cellen Selecteren selecteert u de optie Alle unieke waarden (Inclusief eerste duplicaten) en klikt u op de knop OK. Alle unieke waarden worden nu geselecteerd in de kolom. Kopieer en plak ze naar een nieuwe locatie. Zie onderstaande schermafbeelding:
Kutools voor Excel: met meer dan 200 handige Excel-add-ins, gratis te proberen zonder beperking gedurende 60 dagen. Download en probeer het nu gratis!
2. Voeg twee lijstvakken afzonderlijk in door te klikken op Ontwikkelaar > Invoegen > Lijstvak (ActiveX-besturingselement). Zie onderstaande schermafbeelding:
3. Klik met de rechtermuisknop op het bovenliggende lijstvak en selecteer Eigenschappen in het contextmenu. In het dialoogvenster Eigenschappen wijzigt u het veld (Naam) in Drink of een andere naam naar keuze, voert u het celbereik met de geëxtraheerde unieke waarden in het veld ListFillRange in en sluit het dialoogvenster.
4. Herhaal stap 3 om het veld (Naam) van het tweede lijstvak te wijzigen in Item in het dialoogvenster Eigenschappen.
5. Klik met de rechtermuisknop op het werkbladtabblad en selecteer Code Weergeven in het rechtsklikmenu. Kopieer vervolgens onderstaande VBA-code in het Code-venster. Zie onderstaande schermafbeelding:
VBA-code: Dynamische cascaderende lijstvakken maken in Excel
Dim xPreStr As String
Private Sub Drink_Click()
'Update by Extendoffice 2018/06/04
Dim I, xRows As Long
Dim xRg As Range
Dim xRegStr As String
Application.ScreenUpdating = False
xRegStr = Me.Drink.Text
Set xRg = Range("A2:A11")
xRows = xRg.Rows.Count
If xRegStr <> xPreStr Then
Me.Item.Clear
'Me.OtherListBoxName.Clear
Set xRg = xRg(1)
For I = 1 To xRows
If xRg.Offset(I - 1).Value = xRegStr Then
Me.Item.AddItem xRg.Offset(I - 1, 1).Value
'Me.OtherListBoxName.AddItem xRg.Offset(I - 1, 2).Value
End If
Next
xPreStr = xRegStr
End If
Application.ScreenUpdating = True
End Sub
Opmerkingen: In de code zijn Drink en Item de namen van de twee lijstvakken, wijzig ze naar uw eigen namen.
6. Druk op de toetsen Alt + Q om het venster Microsoft Visual Basic for Applications te sluiten.
7. Schakel de Ontwerpmodus uit door te klikken op Ontwikkelaar > Ontwerpmodus.
Vanaf nu, wanneer u een soort drank zoals Koffie selecteert in het bovenliggende lijstvak, worden alle koffie-items weergegeven in het tweede lijstvak. Als u Thee of Wijn selecteert, worden alleen de thee- of wijntypes weergegeven in het tweede lijstvak. Zie onderstaande schermafbeelding:
Gerelateerde artikelen:
- Hoe de afhankelijke vervolgkeuzelijstcel wissen nadat de selectie in Excel is gewijzigd?
- Hoe maak je afhankelijke cascaderende vervolgkeuzelijsten in Excel?
- Hoe automatisch andere cellen invullen bij het selecteren van waarden in een vervolgkeuzelijst in Excel?
- Hoe maak je een vervolgkeuzelijstkalender in Excel?
- Hoe selecties van ActiveX-lijstvakken in Excel opslaan of behouden?
Beste Office-productiviteitstools
Versterk je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!