Vervolgkeuzelijst met meervoudige selectie

De klassieke vervolgkeuzelijst in een Excel-blad is geweldig, maar je kunt er maar één optie uit de gepresenteerde set selecteren. Soms is dit precies wat u wilt, maar er zijn situaties waarin de gebruiker moet kunnen kiezen sommige elementen uit de lijst.

Laten we eens kijken naar verschillende typische implementaties van zo'n lijst met meerdere selecties.

Optie 1. Horizontaal

De gebruiker selecteert één voor één items uit de vervolgkeuzelijst en ze verschijnen rechts van de cel die wordt gewijzigd, en worden automatisch horizontaal weergegeven:

Vervolgkeuzelijsten in cellen C2:C5 in dit voorbeeld worden op een standaard manier gemaakt, dwz

  1. selecteer cellen C2:C5
  2. tabblad of menu Data kies een team Data Validation
  3. in het geopende venster selecteert u een optie Lijst en specificeer als een bereik bron cellen met brongegevens voor lijst A1:A8

Vervolgens moet u een macro toevoegen aan de bladmodule, die al het hoofdwerk zal doen, dwz geselecteerde waarden toevoegen aan de rechterkant van de groene cellen. Klik hiervoor met de rechtermuisknop op de bladtab met vervolgkeuzelijsten en selecteer de opdracht Broncode. Plak de volgende code in het geopende Visual Basic-editorvenster:

Private Sub Worksheet_Change (ByVal Target As Range) On Error Hervat Volgende Indien niet Intersect (Target, Range ("C2:C5")) is niets en Target.Cells.Count = 1 Dan Application.EnableEvents = False If Len (Target.Offset (0, 1)) = 0 Dan Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Vervang indien nodig het gevoelige bereik van de vervolgkeuzelijsten C2:C5 in de tweede regel van deze code door uw eigen bereik.

Optie 2. Verticaal

Hetzelfde als in de vorige versie, maar de nieuw geselecteerde waarden worden niet rechts, maar onderaan toegevoegd:

Het wordt op precies dezelfde manier gedaan, maar de macrocode van de handler verandert enigszins:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Hervat Volgende Indien niet Intersect(Target, Range("C2:F2")) Is niets en Target.Cells.Count = 1 Dan Application.EnableEvents = False If Len(Target.Offset (1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Vervang indien nodig nogmaals het gevoelige bereik van de vervolgkeuzelijsten C2:F2 door uw eigen bereik in de tweede regel van deze code.

Optie 3. Met accumulatie in dezelfde cel

Bij deze optie vindt de accumulatie plaats in dezelfde cel waar de vervolgkeuzelijst zich bevindt. De geselecteerde elementen worden gescheiden door een willekeurig teken (bijvoorbeeld een komma):

Vervolgkeuzelijsten in groene cellen worden op een volledig standaard manier gemaakt, zoals in de vorige methoden. Al het werk wordt opnieuw gedaan door een macro in de werkbladmodule:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If Eind sub  

Indien gewenst kunt u het scheidingsteken (komma) in de 9e regel code vervangen door uw eigen teken (bijvoorbeeld een spatie of een puntkomma).

  • Een eenvoudige vervolgkeuzelijst maken in een Excel-bladcel
  • Vervolgkeuzelijst met inhoud
  • Vervolgkeuzelijst met ontbrekende opties toegevoegd
  • Wat zijn macro's, hoe ze te gebruiken, waar macrocode in te voegen in Visual Basic

Laat een reactie achter