Forum: PC-Programmierung VBA-Makro: Word Dropdowns ansprechen


von Kevin (Gast)


Lesenswert?

Hallo Forengemeinde,

leider ist es so weit gekommen, dass ich doch ein VBA Makro schreiben 
muss.
Ich habe: ein Word-Dokument, in dem ich an vielen Stellen aus dem 
Developer-Bereich Dropdowns platziert habe, welche alle zwei Einträge 
enthalten. Anhand von einem Integer, der mal eins und mal zwei ist, 
sollen alle Dropdowns in dem Dokument auf den ersten, bzw. zweiten 
Eintrag gestellt werden.

Aktuell sieht der Code wie folgt aus:
1
Sub FillDropDowns()
2
    Dim DropDownLine As Integer
3
    Dim aField As FormField
4
    
5
    If ActiveDocument.CustomDocumentProperties("Product").Value = True Then
6
        DropDownLine = 1
7
    Else
8
        DropDownLine = 2
9
    End If
10
    
11
    For Each aField In ActiveDocument.FormFields
12
        MsgBox aField.Result
13
        If aField.Type = wdFieldFormDropDown Then
14
            DropDownLine = DropDownLine + 1
15
        End If
16
    Next aField
17
    MsgBox DropDownLine
18
End Sub

Aus dem Property "Product" wird DropDownLine korrekt gesetzt, die MsgBox 
aField.Result erscheint aber nicht und DropDownLine zählt nicht mit 
jedem gefundenen DropDown hoch. Ich scheitere also schon an der 
For-Schleife.
Frage an euch: wie muss die Abfrage korrekt lauten, damit die Schleife 
überhaupt über alle Objekte läuft, zu denen auch die Dropdowns gehören?

Vielen Dank schon einmal!

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

In welchem Bereich befinden sich die Dropdowns?
Um das gesamte Dokument zu durchlaufen solltest du auch Kopf- und 
Fußzeilen beachten, z.B. so:

Sub sTest()
Dim aField As FormField
Dim lngStoryCounter As Long
Dim aStoryRange As Range
lngStoryCounter = 0
For Each aStoryRange In ActiveDocument.StoryRanges
    lngStoryCounter = lngStoryCounter + 1
    For Each aField In aStoryRange.FormFields
        Debug.Print lngStoryCounter, aField.Type
    Next aField
Next aStoryRange
End Sub

Ich vermute aber eher, dass dein Formularfeld ein anderes ist (es gibt 
legacy und neuere) - das kannst du am besten über das Lokalfenster 
herausfinden, in dem du es selektierst und weiter untersuchts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.