Multiple choice

Voorbeeldbestanden bij dit artikel:
  • Multiple choice
  • Inleiding

    In deze vraag op het ondertussen afgesloten Worksheet forum willen Leonard en Olga weten hoe je snel zonder moeite een vragenlijst met multiple choice opties kan aanmaken. Je hebt bv. 25 vragen, en telkens 5 verschillende antwoordmogelijkheden. Het gekozen antwoord wordt dan rechts van de vakjes getoond. Leonard wil aanvinkvakjes (check boxes), Olga verkiest keuzerondjes (option buttons).

    Automatisatie

    Wel, ik heb goed nieuws voor beiden. Hierboven staat een Excel applicatie die alles eigenhandig uitvoert met mijn VBA-code. Klik op de knop, vul het schermpje in en een weinig later staat alles op het scherm.

    VBA-code

    De code is te lang om hier op de site te zetten, maar dat neemt niet weg dat het leerrijk is om er eens een kijkje in te nemen. Er zitten een aantal mooie stukken code in, en ook oplossingen voor problemen die ik tijdens het experimenteren ondervond. O.a. hoe je aan aanvinkvakjes een macro hangt met VBA-code (OnAction).

    Dit is Versie 2.6 van de code. Je kan nu ook voor listboxen kiezen. Ook voor een zon (autoshape) kan je opteren; meer nog, alle ingebouwde autoshapes in Excel zijn mogelijk (dan moet je wel in de code de msoAutoShapeType constante veranderen in het type dat je wil. Mail het mij indien het niet mocht lukken!). Er kan wel slechts 1 antwoord per vraag gekozen worden. Wil je de Nederlandse woorden, gebruik dan 2 keer Bewerken > Vervangen… ( Control + H). Dave Peterson heeft trouwens veel minder uitgebreide code geschreven, maar die is ook het bekijken waard. Zie hier.

    Update 03/11/2007 - versie 2.7: Hier is een vraag van Gert, die de code toepaste om automatisch een enquête van 120 vragen met keuzerondjes op te stellen! Hij vraagt bijkomend of de option buttons verticaal uitgelijnd kunnen worden: ze moeten mee naar onder schuiven indien de rijhoogte vergroot wordt. Dit kan niet met de huidige code, maar wel als de option buttons per vraag gegroepeerd worden. Wel een redelijk karwei voor 120 vragen maal x option buttons per vraag. Deze routine doet dat automatisch:

    Sub OptionButtonsGroeperen()
    ' Wim Gielis ' http://www.wimgielis.com
    ''''' ' Routine to group all option buttons in a row ' 03/11/07 '''''
    Dim varOButtons() Dim shpRange As ShapeRange Dim shp As Shape Dim l As Long Dim ws As Worksheet Set ws = ActiveSheet For l = 1 To ws.UsedRange.Rows.Count ReDim varOButtons(1 To 1) i = 0 For Each shp In ws.Shapes If Not Intersect(shp.TopLeftCell, Rows(l)) Is Nothing Then If shp.Type = msoFormControl Then ' dit is een 8 If shp.FormControlType = xlOptionButton Then ' dit is een 7 i = i + 1 ReDim Preserve varOButtons(1 To i) varOButtons(i) = shp.Name End If End If End If Next shp If i > 0 Then ws.Shapes.Range(varOButtons).Group.Select End If Next l Range("A1").Select
    End Sub

    Aan de slag!

    Uiteraard kan je alles opmaken zoals je zelf wil. De code kan als aanvulling dienen voor het opstellen en analyseren van een enquête, dat je vindt op deze pagina. Laat je inspiratie de vrije loop en maak er wat moois van!




    Over Wim

    Wim Gielis is Business Intelligence consultant en Excel expert

    Andere links