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.