PDA

Vollständige Version anzeigen : Serienbrief If-Anweisung mit Dropdown-Steuerelement


MeinsDeins
27.08.2019, 13:43
Hallo,

ich möchte ein Dropdown-Steuerelement in eine IF-Bedingung einfügen. Wie muss das Aussehen.

Ich habe eine Tabelle Kürzel, Langtext und Telefonnr., möchte das Kürzel in das Dropdown-Feld zur Auswahl bereitstellen, dies soll aber nicht im Brief selber ausgegeben werden. Sondern je nach Auswahl Langtext und Telefonnr.

Wie muss die Bedingung aussehen?

Danke für eine Rückinfo.

Gerhard H
27.08.2019, 14:39
Hallo MeinsDeins,

vorläufig hab ich nur Rückfragen:

wäre es nicht wesentlich gescheiter, Kürzel, Langtext und Telefonnr. in die Datenquelle mit aufzunehmen?

Wenn du anderer Meinung bist, bitte ich um folgende Auskünfte:

Warum geht das nicht in die Datenquelle aufzunehmen?
Willst du das Dropdown noch im Serien-Hauptdokument bedienen lassen?
Wie hast du dir das vorgestellt, ein Dropdown ins Dokument einzufügen, deren gewählten Inhalt aber nicht sehen zu wollen?
Was ist das für eine Tabelle mit den drei Eigenschaften? Excel? Word? Im selben Dokument?
Um wieviele Dropdowneinträge handelt es sich grob?

MeinsDeins
27.08.2019, 17:09
Hallo Gerhard,

ja, wäre es. Ich habe ein komplexes Datenbank-System dahinter und da kann ich die Felder nicht hinzufügen. Ich arbeite hier mit einer Word-Schnittstelle.

Ja, das Dropdown-Feld (hab nur das Steuerelement zur Verfügung) muss in dem Hauptdokument bedient werden.

Genau das ist die Frage, kann ich ein Dropdown-Feld auswählen, dessen Inhalt nicht angezeigt wird, sondern weil es in einer IF-Anweisung steht, nur der Inhalt ausgegeben wird, denn ich in der IF-Anweisung dahinter schreibe in die Hochkommas, je nach Auswahl.

Die Tabelle ist wie gesagt eine große und komplexe Datenbank. Die Befüllung der Parameter im Serienbrief verläuft über ein anderes Programm.

Es handelt sich um weniger als 10 Einträge.

Gerhard H
27.08.2019, 19:44
Hallo MeinsDeins,

"Die Befüllung der Parameter im Serienbrief verläuft über ein anderes Programm"
Das macht die Sache für einen Außenstehenden unwägbar. Aber vielleicht ist es auch egal, da die Geschichte mit dem Dropdown vorab im Hauptdokument stattfinden soll.

Was mir noch nicht klar ist: Ob bzw. wie du an die im Beitrag 1 genannte Tabelle rankommst, weshalb ich dir ein Beispiel bastle, in dem die Zuordnungen im Makro selbst passieren. Bei 10 Einträgen halte ich das für noch praktikabel.

Bedingungen für das Funktionieren:


Es muss ein Inhaltssteuerelement-Dropdown sein (Formulardropdowns würden Dokumentschutz benötigen, was nicht mit dem Seriendruck zusammengeht

Beim Word-Dokument muss es sich um eine Vorlage mit Makros (*.dotm) handeln. Ansonsten wäre das Dropdown, das ja weg soll, für immer weg. Es kann allerdings durchaus sein, dass dein Fremdprogramm die Annahme solcher Dateiformate verweigert.


Ich lade dir ein Musterdokument hoch, das nicht mit einer Datenquelle verbunden ist. Das Makro sieht aber für ein Seriendruck-Hauptdokument nicht anders aus. Weitere Hinweise findest du im Dokument. Hier noch das Makro, welches enthalten ist:
Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim strLangtxt As String, strTel As String
Dim CCBereich As Range

'Abbrechen, wenn das Dropdown nicht den Tag "Auswahl" hat
If CC.Tag <> "Auswahl" Then Exit Sub

'Abbrechen, wenn das Dropdown noch den Platzhaltertext hat (d.h. noch keine Auswahl getroffen
If CC.ShowingPlaceholderText Then Exit Sub

'Bereich des Contentcotrols merken
Set CCBereich = CC.Range

'Langtext und Tel je nach gewähltem Kürzel festlegen
Select Case CC.Range.Text
Case "Me"
strLangtxt = "Meier"
strTel = "111"

Case "Hu"
strLangtxt = "Huber"
strTel = "222"

Case "Schmi"
strLangtxt = "Schmidt"
strTel = "333"

' usw weitere Kürzel erfassen

Case Else
MsgBox "Dieses Kürzel ist nicht bekannt"
End Select

'entsprechende Contentcontrols füllen
ActiveDocument.SelectContentControlsByTag("Langtext").Item(1).Range.Text = strLangtxt
ActiveDocument.SelectContentControlsByTag("Telefon").Item(1).Range.Text = strTel

'Dropdown löschen
CCBereich.Delete
CC.Delete

End Sub

Nachtrag:
Es wäre auch eine Lösung möglich, die vielleicht "fremdprogrammkompatibler" ist: Einsatz eines Fill-In-Feldes und Langtext plus Telefon durch entsprechende IF-Felder mit Bezug auf eine Textmarke um das Fill-In-Feld rum.
Vorteile:
Das Dokument ist makrofrei, muss aber immer noch eine Dokumentvorlage sein (*.dotx)
Das Fill-In-Dialogfeld erscheint bei Dokumentstart
Nachteil:
Das Kürzel kann nicht ausgewählt werden, sondern muss in das Fill-In-Dialogfeld eingetragen werden.

Musterdokument bei Bedarf.