VBA-Makro: Word Dropdowns ansprechen

Gast #7098294
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!
(Firma: Manfred) #7149813
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.