Wie bekomme ich den Inhalt in MS Word ins Dropdow?

Ich versuche im MS-Word (Version 2002) ein Formular zu erstellen. In den Dropdownfeldern soll man jeweils zwischen groß/mittel/klein wählene können. Allerdings bekomme ich den Inhalt partout nicht in das Feld, da ich bei der Programmierung keine Ahnung habe.
Im Quelltext steht lediglich das folgende:

"Private Sub ComboBox2_Change()

End Sub"

Kann mir bitte jemand sagen, wie ich den Inhalt programmieren muss, damit ich das dann ganz einfach auswählen muss?
Und kann ich die Felder zur BEarbeitung durch andere sperren? und wenn ja, wie?

lg und danke für alle Tipps

Hallo,

mit dem unten angegebenen Beispielcode wird die Combobox2 gefüllt und im Dokument ein vorhandenes Formularfeld „FormularFeld2“ sowie eine Textmarke „Textmarke2“ gefüllt. Die Bezeichnungen können natürlich angepasst werden.

Viele Grüße,
BigBen

VBA-Code:

Option Explicit

Private Sub ComboBox2_Change()
FillBookmark „Textmarke2“, Me.ComboBox2.Value

ActiveDocument.FormFields(„FormularFeld2“).Result = Me.ComboBox2.Value
End Sub

Private Sub FillBookmark(sBookmarkName As String, sTextValue As String)
’ Textmarke mit Inhalt füllen
With ActiveDocument
If ActiveDocument.Bookmarks.Exists(sBookmarkName) Then
Dim bk As Bookmark, rng As Range, lRngStart As Long
Set bk = .Bookmarks(sBookmarkName)
Set rng = bk.Range
lRngStart = rng.Start
If Not bk.Empty Then
’ Alten Inhalt löschen
rng.Delete
Set bk = .Bookmarks.Add(sBookmarkName, .Range(lRngStart, lRngStart))
End If
bk.Range.Text = sTextValue
bk.Delete
Set bk = .Bookmarks.Add(sBookmarkName, .Range(lRngStart, lRngStart + Len(sTextValue)))
Else
MsgBox „Im Dokument existiert keine Textmarke „““ & sBookmarkName & „“", vbCritical"
End If
End With
End Sub

Private Sub FillCombobox2()
’ ComboxBox2 mit Inhalten füllen
With Me.ComboBox2
.Clear
.AddItem „Groß“
.AddItem „Mittel“
.AddItem „Klein“
End With
End Sub

Private Sub UserForm_Initialize()
FillCombobox2
End Sub

Hallo,
danke für die schnelle Antowrt…
Also, ich hab den Quelltext so eingefügt, allerdings ist das Feld immernoch leer.
Kann man die Felder nur über den Quellcode füllen, oder gibts es noch eine einfacher Alternative?
Das geht einfach nicht. Muss ich da noch irgendwelche Einstellungen machen?
lg

Hallo,

um welchen FEldtyp handelt es sich denn, das gefüllt werden muss?

Im Beispiel habe ich angenommen, dass ein Formularfeld oder eine Textmarke im Dokument gefüllt werden soll.

Wenn das Feld sich an einer anderen Stelle befindet, dann muss der VBA-Code eventuell angepasst werden.

Bitte teile mir mit, wie das Feld im Dokument(?) erstellt wurde, und an welcher Stelle sich das Feld befindet (z.B. in der Kopfzeile, Fußzeile, im Positionsrahmen, …)

Viele Grüße,
BigBen

Hallo,

also, das Feld ist ein Dropdown-Feld (Kombinationsfeld) bei dem man quasi aus mehreren Inhalten das zutreffende auswählen kann.
Eingefügt habe ich das Feld einfach durch die Menüleiste für Formularbögen.
Das Feld befindet sich auch einfach im Dokument im Formularbogen.
Weiterhin arbeite ich in einer Dokumentvorlage…

Irgendwas anderes ist an dem Fled nicht eingestellt.

Kann ich das Dokument später auch so schützen, dass nur noch die Auswahl zu treffen ist, aber der restliche normale Text unveränderbar ist?

lg

Hallo Stephiest,

ich habe bisher angenommen, dass das Dropdownfeld in einer UserForm befinden würde. Aus der letzten Nachricht eght hervor, das sich das DropDownfeld im Dokument befindet.

In diesem Fall muss der VBA-Code etwas angepasst werden.

Ich komme vermutlich erst zum Wochenende wieder dazu, mich der Sache anzunehmen.

Viele Grüße,
BigBen

Hallo,

mit dem unten stehenden VBA-Code kann ein Combinationsfeld, welches direkt in einem Dokument vorhanden ist, initialisiert und beim Anklicken ausgelesen werden.

Damit der VBA-Code funktioniert, müssen im Dokument folgende Elemente Vorhanden sein:

  • eine Textmarke mit dem Namen „Textmarke“
  • ein Textformularfeld mit dem Namen „Formularfeld“
  • ein Kombinationsbox mit dem Namen „ComboBox2“

Viele Grüße,
BigBen

— VBA-Code —

Option Explicit

Private Sub ComboBox2_Change()
FillBookmark „Textmarke“, Me.ComboBox2.Value

ActiveDocument.FormFields(„FormularFeld“).Result = Me.ComboBox2.Value
End Sub

Private Sub FillBookmark(sBookmarkName As String, sTextValue As String)
’ Textmarke mit Inhalt füllen
With ActiveDocument
If ActiveDocument.Bookmarks.Exists(sBookmarkName) Then
Dim bk As Bookmark, rng As Range, lRngStart As Long
Set bk = .Bookmarks(sBookmarkName)
Set rng = bk.Range
lRngStart = rng.Start
If Not bk.Empty Then
’ Alten Inhalt löschen
rng.Delete
Set bk = .Bookmarks.Add(sBookmarkName, .Range(lRngStart, lRngStart))
End If
bk.Range.Text = sTextValue
bk.Delete
Set bk = .Bookmarks.Add(sBookmarkName, .Range(lRngStart, lRngStart + Len(sTextValue)))
Else
MsgBox „Im Dokument existiert keine Textmarke „““ & sBookmarkName & „“", vbCritical"
End If
End With
End Sub

Private Sub FillCombobox2()
’ ComboxBox2 mit Inhalten füllen
With Me.ComboBox2
.Clear
.AddItem „Groß“
.AddItem „Mittel“
.AddItem „Klein“
End With
End Sub

Private Sub UserForm_Initialize()
FillCombobox2
End Sub