WORD VBA: Aus Userform SetFocus auf Hauptdokument

Ich habe ein Userform mit einer Schaltfläche erstellt, beim Klick auf die Schaltfläche wird ein Text ins Hauptdokument eingefügt. Nun möchte ich, dass danach automatisch der Fokus wieder im Hauptdokument liegt und nicht in meiner Userform, denn ich möchte weiter Text eingeben. Versuche, wie

Application.ActiveWindow.SetFocus
Windows(1).SetFocus
ActiveDocument.Windows(1).SetFocus

zeigten keinen Erfolg.
Kann mir da jemand helfen?

Hallo, Dieter!

Ich habe ein Userform mit einer Schaltfläche erstellt, beim
Klick auf die Schaltfläche wird ein Text ins Hauptdokument
eingefügt. Nun möchte ich, dass danach automatisch der Fokus
wieder im Hauptdokument liegt und nicht in meiner Userform,

Dann musst Du diese schließen. Also: Daten einfügen, dann Form mit Unload Me oder Me.Hide schließen. Ansonsten bleibt die UserForm im Vordergrund.

Gruß, Manfred

Dann musst Du diese schließen. Also: Daten einfügen, dann Form
mit Unload Me oder Me.Hide schließen. Ansonsten bleibt die
UserForm im Vordergrund.

Genau das will ich ja nicht machen.

Konkret geht es mir darum:
Ich habe einen sehr umfangreichen Text (mit Gliederung, Inhaltsverzeichnis,…).

Mir ist die WORD-Funktion „Einfügen-Referenz-Querverweis“ und dann die Auswahl aus der Extra_Mini_Liste viel zu nervig. Deshalb habe ich mir eine Userform gebastelt.
In meiner Userform habe ich nun neben dem Hauptfenster eine (große) Liste mit sämtlichen Gliederungspunkten meines Dokuments. Wenn ich jetzt irgendwo einen Querverweis einfügen möchte (z.B. siehe 6.5.1), mache ich in der Userform einen Doppelklick auf den gewünschten Menüpunkt und es wird als Referenz eingefügt. Das funktioniert prima. Jetzt soll sich das Fenster aber nicht dauernd schließen, sondern offen bleiben. Nach dem Einfügen der Referenznummer würde ich aber gerne gleich wieder in meinem Dokument weiterschreiben. Da muss es doch eine Möglichkeit geben, den Fokus wieder an das Hauptdokument zu geben?

Oder geht das mit VB grundsätzlich nicht?

Hallo, Dieter!

gerne gleich wieder in meinem Dokument weiterschreiben. Da
muss es doch eine Möglichkeit geben, den Fokus wieder an das
Hauptdokument zu geben?
Oder geht das mit VB grundsätzlich nicht?

Ich glaube nicht, jedenfalls nicht mit der normalen UserForm. So eine UserForm ist applikationsmodal, d. h. offen und so lange im Vordergrund, bis sie wieder geschlossen wird (oder eine weitere aufgerufen wird, die dann ihrerseits im Vordergrund bleibt und beim Schließen den Fokus auf die erste UserForm zurückgibt).

Du müsstest da schon auf ActiveX oder so ausweichen, um Word quasi ein neues Menü/eine neue Symbolleiste unterzujubeln.

Gruß, Manfred

Hallo Manfred,

Ich glaube nicht, jedenfalls nicht mit der normalen UserForm.
So eine UserForm ist applikationsmodal, d. h. offen und so
lange im Vordergrund, bis sie wieder geschlossen wird (oder
eine weitere aufgerufen wird, die dann ihrerseits im
Vordergrund bleibt und beim Schließen den Fokus auf die erste
UserForm zurückgibt).

Als modale Form habe ich die UserForm nicht geöffnet, mein Hauptdokument kann also ohne weiteres den Fokus erhalten. Ich dachte mir halt, dass so etwas simples mit VBA selbst möglich ist. Wen es interessiert, ich habe die folgende Lösung nun selbst über die WinAPI gefunden:

Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long

Sub FocusAnDocument()
 Dim h As Long
 h = GetActiveWindow()
 h = GetParent(h)
 SetFocus h
End Sub

Gruß Dieter