3.3k Aufrufe
Gefragt in Textverarbeitung von Einsteiger_in (23 Punkte)
Hallo zusammen,

ich würde gerne nachstehendes lösen bzw. auf eure Hilfe zählen.

Ich habe eine Wordvorlage mit einem Dropdownfeld ("Feld1", "Feld2", "Feld3"). Wenn das Dropdown "Feld1" ausgewählt wird, sollte bei einer Textmarke ("Textmarke1") ein bestimmter Autotext eingetragen werden. Wer kann mir hier einen einfachen VBA Code mitteilen.

Würde mich freuen und mir einiges an Arbeit ersparen.

DANKE und schöne Grüße

Dietmar

6 Antworten

0 Punkte
Beantwortet von
Hallo,

z.B. indem du in Modul "ThisDocument" den folgenden Code einfügst.

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)

Select Case ContentControl.Range.Text
Case "Feld1"
AutoText = "Autotext1"
Case "Feld2"
AutoText = "Autotext2"
Case "Feld3"
AutoText = "Autotext3"
End Select


With ThisDocument.Bookmarks("MeineTextMarke").Range
.Text = AutoText
.Bookmarks.Add "MeineTextMarke"
End With

End Sub

Gruß Mr. K.
0 Punkte
Beantwortet von
Bei mehreren Feldern, hier nochmal mit Bezug auf das Dropdownfeld. Das Ereignis wird ausgelöst, sobald du das Feld verlässt.

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)

If ContentControl.Type = wdContentControlComboBox Then
Select Case ContentControl.Range.Text
Case "Feld1"
AutoText = "Autotext1"
Case "Feld2"
AutoText = "Autotext2"
Case "Feld3"
AutoText = "Autotext3"
End Select


With ThisDocument.Bookmarks("MeineTextMarke").Range
.Text = AutoText
.Bookmarks.Add "MeineTextMarke"
End With
End If

End Sub
Mr. K.
0 Punkte
Beantwortet von
DANKE für deine Hilfe. Habe den Code kopiert und wie vorgesehen in Thisdocument eingefügt. Funktioniert nicht wirklich. Sollte das Makro wirklich auch in WORD funktionieren, oder ist dies nur für EXCEL. Oder mach ich da etwas falsch.

DANKE für deine Hilfe.

Gruß albero
0 Punkte
Beantwortet von
Hi,

bei mir funktionierts. Allerdings mit Word 2010. In älteren Versionen gibt es vielleicht andere Wege. Welche Version hast du und auf welche Weise hast du die Dropdownbox eingefügt bzw. mit Daten gefüllt?

Mr. K.
0 Punkte
Beantwortet von
Habe Word 2010. Die Dropdown habe ich in Word per Entwicklertool > Steuerelemente > Formulare aus Vorversion - Kombinationsfeld(Steuerelement) eingefügt. Und anschließend mittels Doppelklick die Auswahlpunkte hinzugefügt. Berechnen beim Verlassen.
Hätte ich dies per VBA erzeugen sollen.

Ups, da drückt mich noch etwas, was mich schon einige Minuten/Stunden bewegt:
Ich habe in Excel eine Userform (Test). Wenn ich den Namen eines Dropdownfeldes der Userform (FamName) auswähle, würde ich gerne per SVerweis beim Verlassen des Dropdownfeldes (FamName) in dem in der Userform darunter stehenden Textfeld ("Summe") die Daten der Tabelle ("DATEN") , Spalte H, einblenden. Analog Excel SVERWEIS.
Kannst du das Rätsel lösen oder ist dies nicht möglich. Habe einiges gegoogelt, aber es scheint nicht zu funktionieren.
Jedenfalls ein herzliches DANKESCHÖN im Voraus,

Gruß albero
0 Punkte
Beantwortet von
Hallo albero,

Sorry, dass ich mich erst jetzt melde. War die letzten Tage viel unterwegs.

Mein Beispiel in Antwort 2 geht davon aus, dass in Word 2010 das aktuelle Kombinationsfeld verwendet wird. Das Befüllen geht hier über Rechtsklick -> Eigenschaften.
Wenn ich ein Dropdownfeld, wie von dir beschrieben einfüge, kann ich die Liste zwar mit Werten füllen, aber ich sehe keinen Dropdownpfeil; kann also diese Variante nicht testen. Falls es bei dir geht ist die Lösung recht einfach:

Wenn du doppelt auf das Feld klickst siehst du den Namen des Feldes als Textmarke (bei mir Dropdown1). Füge nun im VBA-Editor den leicht abgewandelten Code in ein allgemeines Standardmodul (z.B. Modul1) ein.

Sub AutotextÄndern()

Select Case ThisDocument.Bookmarks("Dropdown1").Text
Case "Feld1"
AutoText = "Autotext1"
Case "Feld2"
AutoText = "Autotext2"
Case "Feld3"
AutoText = "Autotext3"
End Select


With ThisDocument.Bookmarks("MeineTextMarke").Range
.Text = AutoText
.Bookmarks.Add "MeineTextMarke"
End With

End Sub

Nach einem erneuten Doppelklick auf das Feld kannst du dieses Makro unter "Ausführen bei Ereignis" und oder "Ausführen bei Beenden" zuweisen.

----------------

Die dritte und beste Alternative wäre, auf dem von dir beschriebenen Weg ein ActiveX-Steuerelement einzufügen. Um diese zu befüllen, klicke doppelt darauf um den Namen zu lesen (bei mir Combobox1). Ersetze nun den entstandenen Code in Modul ThisDocument durch diesen hier:

Private Sub Document_Open()
ComboBox1.AddItem "Feld1"
ComboBox1.AddItem "Feld2"
ComboBox1.AddItem "Feld3"
End Sub
Private Sub ComboBox1_Change()
Select Case ComboBox1.Text
Case "Feld1"
AutoText = "Autotext1"
Case "Feld2"
AutoText = "Autotext2"
Case "Feld3"
AutoText = "Autotext3"
End Select

With ThisDocument.Bookmarks("MeineTextMarke").Range
.Text = AutoText
.Bookmarks.Add "MeineTextMarke"
End With
End Sub
Vergiss nicht das Document als *.docm zu speichern und nach dem erneuten Öffnen auf Inhalte aktivieren zu klicken, damit die Makros funktionieren.

----------------------

Was deine ExcelFrage betrifft, sollte das Userform mindestens folgenden Code enthalten:

Private Sub UserForm_Initialize()
Set firstCell = Range("A1") 'Erste Zelle mit einem Namen (hier Zelle A1)
Set Bereich = Range(firstCell, Cells(Rows.Count, firstCell.Column).End(xlUp))
For Each n In Bereich
If TypeName(n.Value) = "String" Then FamName.AddItem n.Value
Next n
End Sub
Private Sub FamName_Change()
Set firstCell = Range("A1") 'Erste Zelle mit einem Namen (hier Zelle A1)
Set Bereich = Range(firstCell, Cells(Rows.Count, firstCell.Column).End(xlUp).Offset(0, Columns("H").Column - firstCell.Column))
Summe.Text = Application.WorksheetFunction.VLookup(FamName.Text, Bereich, Columns("H").Column - firstCell.Column + 1, 0)
End Sub


Dabei gehe ich davon aus, dass die Namen in Spalte A stehen.

Liebe Grüße

Mr. K.
...