Most Valuable Professional


View Jan Karel Pieterse's profile on LinkedIn subscribe to rss feed
Subscribe in a reader

Subscribe to our mailing list

* indicates required

Audit !!!

Probeer onze RefTreeAnalyser
de beste Excel formule auditing tool.

Cursussen

Excel VBA Masterclass (Engels)
Excel VBA voor Financials

Third party tools

Speed up your file

FastExcel
The best tool to optimise your Excel model!

Repair your file

Stellar Phoenix Excel Repair
Best tool to repair corrupt Excel sheets and objects
Home > Nederlandse site > Artikelen > Besturingselementen > Beschrijving (3)
This page in English

Het gebruik van Besturingselementen

Gedetailleerde beschrijving van de elementen (3)

Keuzelijst

Een keuzelijst gebruikt u wanneer u de gebruiker de mogelijkheid wil geven een optie uit een lijst te kiezen. U zou hier ook een set keuzerondjes voor kunnen gebruiken, maar die zijn lastig dynamisch te maken, bijvoorbeeld als de lijst moet worden uitgebreid. Bij een klein aantal vaste opties hebben keuzerondjes de voorkeur. Gebruik de keuzelijst als het aantal keuzes niet te groot is, bij een groter aantal heeft de keuzelijst met invoervak de voorkeur.

U kunt de lijst die moet worden getoond direct uit een reeks cellen laten halen, of de keuzes middels VBA code toevoegen. Als de lijst op een ander werkblad staat, dan moet u deze lijst eerst een bereiknaam geven. Selecteer hiertoe de lijst en druk op control+F3 (In Excel 2007 en latere versies moet u daarna nog op "Nieuw" klikken) en voer een naam in voor de lijst. Vervolgens kunt u deze naam invullen in de betreffende eigenschap van het besturingselement.

De tweede belangrijke eigenschap is de LinkedCell, deze cel zal het resultaat van de selectie ontvangen:

Opties van de keuzelijst

Afbeelding 10, Twee belangrijke opties van het ActiveX keuzelijst element.

Opties keuzelijst formulier

Afbeelding 11: Twee belangrijke opties van het keuzelijst element uit de formulieren set.

Merk op, dat de formulier keuzelijst in de gekoppelde cel het indexgetal weergeeft en NIET de geselecteerde waarde. U kunt een formule zoals deze gebruiken om de gekozen waarde te achterhalen:

=INDEX(LijstVoorKeuzeLijst;C1)

Indien u de keuzelijst op Meervoudig of Uitbreiden hebt gezet, dan kan de gebruiker meer dan één keuze maken. De gekoppelde cel blijft dan altijd 0 weergeven (#N/B bij de keuzelijst uit de werkset besturingselementen) en u dient VBA code te gebruiken om de gekozen waarden uit te lezen.

Keuzelijst met invoervak

De keuzelijst met invoervak is geschikt voor de wat grotere hoeveelheden gegevens. Met dit invoervak (mits u de ActiveX variant gekozen heeft) is het ook mogelijk -middels VBA- om nieuwe waarden te laten toevoegen aan de keuzelijst indien een waarde wordt ingevoerd die niet in de lijst voorkomt. Dit kan niet met de keuzelijst uit de Formulieren set.

De twee belangrijke eigenschappen LinkedCell (Koppeling met Cel) en ListFillRange (Invoerbereik) werken op exact dezelfde manier als hierboven omschreven bij de keuzelijst. Bijkomend voordeel van de keuzelijst met invoervak is dat na de keuze alleen de gekozen waarde wordt getoond.


 


Vragen, suggesties en opmerkingen

Al het commentaar over deze pagina:


Comment by: Jan Fransen (1/16/2014 4:29:03 PM)

Bij het maken van een userform kies ik ook een 'Keuzelijst' als besturingselement. In het Eigenschappen-venster zou dan ook de 'Linked Cell' -tag moeten staan. Maar die is onzichtbaar.
Hoe kan dat? Ik kan nu niet de keuzelijst 'vullen' met de te kiezen mogelijkheden.

Bij voorbaat dank.

 


Comment by: Jan Karel Pieterse (1/16/2014 5:38:34 PM)

Hallo Jan,

Het is ook beter die linkedcell eigenschap niet te gebruiken op een userform, beter is het om event code te gebruiken die de waarde van de control direct naar de juiste lokatie schrijft.

 


Comment by: Paula Verstelle (3/20/2015 4:43:28 PM)

Ik heb een keuzelijst gemaakt en op meervoudig gezet. Ik moet nu een VBA code gebruiken om het uit te lezen. Ik zou graag willen dat de gekozen waarden allemaal in de gekoppelde cel worden weergegeven. Hoe doe ik dat? Kunt u een vb geven van de vba code?

Dus bv Lijst: appel, peer, banaan. Appel en banaan worden aangeklikt. Ik wil dan in de gekoppelde cel zien: appel,banaan.

Met vriendelijke groeten

 


Comment by: Jan Karel Pieterse (3/20/2015 4:54:45 PM)

Hallo Paula,

Als het gaat om een listbox van de eerste rij elementen, wijs dan een macro toe aan de listbox:

[code]Sub ListBox1_Change()
    Dim sValues As String
    Dim lCT As Long
    With ActiveSheet.ListBoxes(Application.Caller)
        For lCT = 1 To .ListCount
            If .Selected(lCT) Then
                sValues = sValues & .List(lCT) & ", "
            End If
        Next
        Range(.LinkedCell).Value = sValues
    End With
End Sub
[/code]

 


Comment by: Tony (11/8/2017 8:43:51 AM)

betreft keuzelijst met invoervak

Beste,

Kan een keuzelijst enkel gelinkt worden met één bepaalde cel of kan je, op moment van gebruik, zelf bepalen waar die gegevens moeten komen ?

Waarschijnlijk via een event control.. maar vind het niet echt.

mvg
Tony

 


Comment by: Jan Karel Pieterse (11/9/2017 8:49:30 AM)

Hoi Tony,

De keuzelijst kent twee "koppelingen". De ene bevat de brongegevens voor de lijst zelf, de andere is de cel waar de gekozen waarde verschijnt. Beide werken twee kanten op: de lijst werkt de cel bij en de cel werkt ook de keuzelijst bij. In geval van de formulieren keuzelijst geeft de resultaat-cel het volgnummer van het gekozen item en heb je VERT.ZOEKEN nodig om die waarde op te halen. Bij de ActiveX keuzelijst krijg je direct de gekozen waarde in de cel en heb je VERGELIJKEN nodig als je moet weten welk element uit de lijst was gekozen kwa volgorde.

 


Comment by: Tony (11/9/2017 5:08:38 PM)

Hey Jan,

Jouw uitleg heeft me al een schoon inzicht gegeven in het geheel, dat is zeker. Waarvoor dank.

Mijn vraag (probleem/uitdaging) is in feite het manipuleren van het doel-cel in de Activex Keuzelijst met invoerbox. Ttz. .. bijvoorbeeld - Eerst de selectie van de Keuzelijst laten wegschrijven in doel-cel A1, dan in A2, dan in A3, enz....

mvg
Tony

 


Comment by: Jan Karel Pieterse (11/9/2017 5:45:08 PM)

Hoi Tony,

Dat zou je middels het Worksheet_Change event kunnen regelen. Welke soort keuzelijst heb je gebruikt?

 


Comment by: Tony (11/9/2017 5:49:03 PM)

een ActiveX-besturingselement - keuzelijst met invoervak

 


Comment by: Jan Karel Pieterse (11/10/2017 1:52:34 PM)

Hoi Tony,

Stel Excel in op ontwikkelmodus (ontwikkelaars tab) en dubbel-klik op de activeX control. Ervan uitgaande dat de control zich bovenop de cel bevindt die bewerkt dient te worden. De VBA editor opent. Plak deze code erin (pas de naam van je control aan in de onderstaande code):

Option Explicit

Dim mbNoEvent As Boolean

Private Sub ComboBox1_Change()
    If mbNoEvent Then Exit Sub
    ComboBox1.TopLeftCell.Value = ComboBox1.Value
    ComboBox1.Top = ComboBox1.TopLeftCell.Offset(1).Top
    mbNoEvent = True
    ComboBox1.ListIndex = -1
    mbNoEvent = False
End Sub

 


Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.

Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: www.eileenslounge.com.

Uw naam (verplicht veld):

Uw e-mail adres (Niet verplicht, dit adres wordt niet getoond)

Uw verzoek of commentaar:

Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].