Multiselect Listbox naar één Docvariable

Status
Niet open voor verdere reacties.

jackfish

Gebruiker
Lid geworden
10 sep 2010
Berichten
297
Beste mensen,

Op een invulformulier heb ik een listbox gemaakt waarvan de selectie in een docvariabele van het document wordt weggeschreven. Het lukt mij alleen niet om de listbox om te zetten naar multiselect en vervolgens alle geselecteerde waardes in één docvariabele weg te schrijven.
Kan dit eigenlijk wel en wie kan mij hierbij op weg helpen?

Gr jackfish

Bekijk bijlage Invulformulier Somatische Screening - met DocVariables.zip
 
Als je de eigenschap multiselect van de listbox met erfelijke ziekten op multiselectmulti (via het eigenschappenscherm in de ontwerpmodus van het userform) zet kun je de gebeurtenis listbox_change niet meer gebruiken.

als de listbox is verlaten (beforeupdate of afterupdate) gebruik je

Code:
for j=0 to listbox1.listcount-1
  if listbox1.selected(j)=true then activedocument.docvariabels("erf_ziekte")=activedocument.docvariables("erf_ziekte") & vblf & listbox1.List(j)
next

Ik zou me beperken tot deze code:

Code:
'   '   '   '   '   '   '   Lay Out  -  C V R M  -  '   '   '   '   '   '   '
Private Sub Userform_Initialize()
    Listbox_Familielid.List = Array("Vader", "Moeder", "Broer")
    Listbox_Erfelijke_ziektes.List = Array("Hypertensie", "Hypercholesterolemie", "Diabetes Mellitus")
    ActiveDocument.Variables("Checkbox_geen_problemen_familieanamnese") = " "
    ActiveDocument.Variables("Listbox Familielid") = " "
    ActiveDocument.Variables("Textbox Lichamelijke klachten") = " "
    ActiveDocument.Variables("Listbox Erfelijke ziektes") = " "
End Sub

Private Sub CommandButton1_Click()
   If Checkbox_geen_problemen_familieanamnese = True Then ActiveDocument.Variables("Checkbox_geen_problemen_familieanamnese") = "Er zijn geen gezondheidsproblemen in de familie."
   ActiveDocument.Variables("Listbox Familielid") = Listbox_Familielid.Value
   ActiveDocument.Variables("Textbox Lichamelijke klachten") = IIf(Checkbox_Lichamelijke_klachten, Textbox_Lichamelijke_klachten.Text, ActiveDocument.Variables("Textbox Lichamelijke klachten"))
   If Checkbox_Lichamelijke_klachten Then ActiveDocument.Variables("Textbox Lichamelijke klachten") = "Textbox Lichamelijke klachten"
   For j = 0 To Listbox_Erfelijke_ziektes.ListCount - 1
        If Listbox_Erfelijke_ziektes.Selected(j) Then ActiveDocument.Variables("Listbox Erfelijke ziektes") = ActiveDocument.Variables("Listbox Erfelijke ziektes") & vbCr & Listbox_Erfelijke_ziektes.List(j)
    Next
  ActiveDocument.Fields.Update
  Hide
End Sub
 
Laatst bewerkt:
Interessant snb, dit ben ik op 't internet niet tegen gekomen. Ik loop alleen, met het uitproberen van de eerste code, tegen de volgende twee dingen aan:

Na activedocument. past 'docvariables' niet. Het geeft de foutmelding 'De eigenschap of methode wordt niet ondersteund door dit object'
Ik weet niet precies wat je bedoeld met beforeupdate of afterupdate, dit misschien?
Private Sub Listbox_Erfelijke_ziektes_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
Vergeet de eerste code; gebruik uitsluitend de laatste.
 
Die ben ik bij dezen vergeten ;) De code werkt goed snb, toch een tweetal vragen

1. Ik krijg ik een foutmelding; ongeldig gebruik van null. De foutopsporing laat onderstaande code gearceerd zien. Is On Error Resume Next de aangewezen oplossing hiervoor?
ActiveDocument.variables("Listbox Familielid") = Listbox_Familielid.Value

2. in de output van de mulitselect-listbox worden de geselecteerde waardes onder elkaar weergegeven. Kan dat ook achter elkaar, gescheiden door een komma?
 
1. nee. wat zich in Listbox_familielid bevindt kan ik niet zien.

2. dat kun jij best zelf als je de code begrijpt.
 
vraag 2. Allereerst dank voor het niet direct geven van het antwoord (& vbCr &) en excuses voor het snelle vragen.
vraag 1. De foutmelding komt omdat er geen selectie wordt gemaakt in de listbox_familielid. Ik zou dat ook op kunnen lossen door: een msgbox "U heeft nog geen familielid geselecteerd" of standaard keuzeoptie 1 te selecteren.

Gr Jackfish
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan