PDA

Vollständige Version anzeigen : Dropdown felder Absatzformatierung


me19
29.09.2019, 18:33
Hallo,

Ich habe in einer Zeile (1 Absatz) zwei Dropdownfelder, sonst nichts.

Wie lautet der VBA Code, wenn ich diese abhängig von der Auswahl in einem dritten Dropdown Linksbündig oder zentriert haben möchte?

Vielen Dank

Ich seh mich da nicht hinaus, wenn ich eine IF Funktion mache kann ich zwar mit Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter bzw left ein Feld zentrieren aber nur das, das ich für die IF Funtion abfrage. Wie wähle ich stattdessen die anderen beiden aus?

Gerhard H
01.10.2019, 13:38
Hallo me19,

der Code hängt davon ab, was für Dropdowns das sind (Inhaltssteuerelement-Kombinationsfelder, Active-X-Dropdowns oder Kombinationsfelder aus den alten Formularen aus Vorversionen).

Aber eins ist sicher: Mit Selection.ParagraphFormat wird das nur was, wenn das dritte (steuernde) Element im gleichen Absatz steht wie die beiden anderen.

Du kannst den Code aber auch unabhängig von der Selection schreiben, indem du eins der beiden Elemente bei Namen, Textmarke oder Tag identifizierst.
Für Inhaltssteuerelemente zum Beispiel so (in diesem Beispiel hat eines der beiden Elemente den Tag "Auswahl1"):

ActiveDocument.SelectContentControlsByTag("Auswahl1").Item(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter

Bei Bedarf stell bitte ein Musterdokument zur Verfügung.

me19
01.10.2019, 21:15
Danke, es handelt sich um Kombinationsfelder aus den alten Formularen aus Vorversionen

Gerhard H
02.10.2019, 09:53
Hallo me,

dann nach diesem Strickmuster:
Sub richtsAus()
Dim absatz As Paragraph

With ActiveDocument

'auszurichtenden Absatz festlegen
Set absatz = .FormFields("text2").Range.Paragraphs(1)

'Dokumentschutz temporär aufheben
If .ProtectionType <> wdNoProtection Then .Unprotect


'Ausrichtung gemäß Dropdownauswahl
Select Case .FormFields("auswahl").Result
Case "links"
absatz.Alignment = wdAlignParagraphLeft
Case "mitte"
absatz.Alignment = wdAlignParagraphCenter
Case "rechts"
absatz.Alignment = wdAlignParagraphRight
End Select

'Dokumentschutz wieder setzen
If .ProtectionType = wdNoProtection Then
.Protect Type:=wdAllowOnlyFormFields, noreset:=True
End If

End With

End Sub
Hinweise:

Das steuernde Dropdown hat den Textmarkennamen "auswahl"
In seinen Eigenschaften muss das Makro im Listenfeld "Beenden" eingetragen werden.
Eines der Formularfelder im auszurichtenden Absatz muss einen eindeutigen Textmarkennamen haben (im Beispiel: "text2")
Da das Dokument ja schreibgeschützt sein muss, damit die Formularfelder funktionieren, die Ausrichtung aber nur bei ungeschütztem Dokument funktionieren kann, wird der Schutz per Makro temporär aufgehoben.
Das Makro tritt in Aktion, sobald das Dropdown per Tabulatortaste verlassen worden ist.

Musterdokument im Anhang.

me19
02.10.2019, 18:21
Vielen vielen Dank