Inhoudsbesturingselementen voor keuzelijsten met invoervak

Status
Niet open voor verdere reacties.

pkuipers

Gebruiker
Lid geworden
8 jul 2014
Berichten
97
Hallo, is er in word 2010 een mogelijkheid om het "Inhoudsbesturingselement voor keuzelijsten met invoervak" via een Array te vullen?
Bijv.
Dim code AS variant
code = Array(" ","een","twee","enz tot ongeveer vijftig")

keuzelijst naam.list = code

In de oudere versies van Word kon dit, maar het oude ActiveX besturingselement wil ik niet gebruiken.

BVD,

Peter
 
Hier lukt het wel mee:
Code:
Sub testCC()
Dim cc As ContentControl
Dim arr As Variant
Dim i As Integer
    arr = Array("Jan", "Piet", "Klaas")
    Set cc = ActiveDocument.ContentControls(1)
    For i = LBound(arr) To UBound(arr)
        cc.DropdownListEntries.Add arr(i)
    Next i
End Sub
 
Hallo OctaFish,

bedankt voor de oplossing. Het werkt prima.
Maar er is altijd een maar.... : wat als ik meerdere keuzelijsten gebruikt? Is het dan ook mogelijk?

Thanks,

Peter
 
Dan is het nog steeds mogelijk, maar dan moet je wat specifieker weten om welke keuzelijst het gaat. Ofwel door het index nummer te weten (bij 1 keuzelijst is dat makkelijk) ofwel door bijvoorbeeld de tag of titel uit te lezen en te vergelijken.
 
Hallo Octafish,

hierbij het formulier waar het om gaat. Ik wilde het sjabloom als bijlage toevoegen maar dat ging niet, kreeg hier een foutmelding bij.
Het gaat om de keuzelijsten met invoervak bij de tekst "Objectnr". Ik weet niet waar ik de tag of titel kan uitlezen?

BVD,

Peter
 

Bijlagen

  • bestellingen.docx
    35,9 KB · Weergaven: 64
Je keuzelijsten hebben wel allemaal een unieke titel, maar hetzelfde label (=Tag). Die laatste eigenschap kun je dus niet gebruiken, tenzij je wilt dat alle keuzelijsten met dezelfde tag dezelfde lijst met waarden krijgen. Met deze macro kun je ze checken:
Code:
Sub CheckContentControls()
'wdContentControlRichText(0)                Een inhoudsbesturingselement voor tekst met opmaak.
'wdContentControlText(1)                    Een inhoudsbesturingselement voor tekst.
'wdContentControlPicture(2)                 Een inhoudsbesturingselement voor een afbeelding.
'wdContentControlComboBox(3)                Een inhoudsbesturingselement voor een keuzelijst met een invoervak.
'wdContentControlDropdownList(4)            Een inhoudsbesturingselement voor een vervolgkeuzelijst.
'wdContentControlBuildingBlockGallery(5)    Een inhoudsbesturingselement voor een galerie met bouwstenen.
'wdContentControlDate(6)                    Een inhoudsbesturingselement voor een datum.
'wdContentControlGroup(7)                   Een inhoudsbesturingselement voor een groep.
'wdContentControlCheckbox(8)                Een inhoudsbesturingselement voor een selectievakje.

Dim aDoc As Document
Dim objCC As ContentControl
Dim arr As Variant
Dim i As Integer
    
    Set aDoc = ActiveDocument
    For Each objCC In aDoc.ContentControls
        If objCC.Type = wdContentControlComboBox And objCC.Title <> "" Then
            MsgBox objCC.Title & vbLf & objCC.Tag
        End If
    Next objCC

End Sub
 
Hallo OctaFish,

alle keuzenlijsten met dezelfde Tag mogen met dezelfde waarden worden gevuld.

B.V.D.

Peter
 
In dat geval heb je volgens mij alle elementen om de macro zelf af te maken. Kwestie van de laatste macro combineren met de eerste. Om een hint te geven: de matrix vul je natuurlijk maar één keer (eerste macro) en in de tweede macro vervang je And objCC.Title <> "" door And objCC.Tag = "Object" want je vergelijkt nu op basis van de tag. En er komt dus een lusje bij die elke keuzelijst die voldoet aan de eisen vult met de waarden uit de array.
 
Hallo Octafish,

bedankt voor je hulp. Na verschillende code's te hebben gecombineerd heb ik het draaiende gekregen.

Thanks, :thumb::thumb:

Peter
 
Helemaal goed, dan heb je mijn code niet nodig :D. Post 'm nog even voor de meelezers, dan hebben die er ook nog wat aan :).
 
Beste Octafish,

ik heb wel jouw code gebruik, zie hier:

Code:
Sub CheckContentControls()

Dim aDoc As Document
Dim cc As ContentControl
Dim objCC As ContentControl
Dim arr As Variant
Dim i As Integer
Dim a As Integer
    arr = Array(" ", "1", "2", "3", "4")
    Set aDoc = ActiveDocument
    a = ActiveDocument.ContentControls.Count
    For Each objCC In aDoc.ContentControls
        For a = 1 To a
            Set cc = ActiveDocument.ContentControls(a)
            If objCC.Type = wdContentControlComboBox And objCC.Tag = "" Then
                For i = LBound(arr) To UBound(arr)
                    cc.DropdownListEntries.Add arr(i)
                Next i
            End If
            If a = 8 Then '8 is het aantal combobox'en
                Exit For
            End If
        Next a
    Next objCC
End Sub

Misschien dat jij het kan fine-tunen?

Nogmaals bedankt,

mvg Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan