Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UserForm immer im Vordergrund

UserForm immer im Vordergrund
19.10.2015 07:43:09
Leah
Guten morgen
Hab ein kleines Problem und zwar wird beim öffnen einer Datei ein UserForm gestartet.
Wenn Excel noch nicht geöffnet ist, funktioniert das wunderbar, dass die UserForm in Vordergrund ist. Wenn aber schon eine andere Datei oder einfach Excel geöffnet ist, wird die UserForm nicht im Vordergrund angezeigt, sondern ich muss erst in der Taskleiste Excel anklicken, damit die UF angezeigt wird.
Ich hab folgenden Code in meiner Arbeitsmappe bei Workbook_Open:
Application.WindowState = xlMinimized
Message.Show
Application.WindowState = xlNormal
Wie muss ich den Code anpassen, dass die UF IMMER im Vordergrund erscheint beim öffnen?
Vielen Dank und gruss
Leah

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm immer im Vordergrund
19.10.2015 09:40:57
ChrisL
Hi Leah
Vielleicht genügt es schon, wenn du die Userform Eigenschaft ShowModal=False setzt.
Oder könntest einen Workaround ausprobieren. Eine versteckte Textbox auf das Userform und SetFocus setzen.
cu
Chris

AW: UserForm immer im Vordergrund
19.10.2015 10:16:09
Leah
Hi Chris
Danke.. ShowModal=False hat nicht den gewünschten Erfolge, da ich ja Excel minimiert haben möchte und nur die UserForm im Vordergrund.
Das mit der verstekten TextBox hat auch nicht funktioniert. Aber vielleicht hab ichs falsch eingesetzt.
Habs so umgesetzt:
Application.WindowState = xlMinimized
Message.Show
txFocus.SetFocus
Application.WindowState = xlNormal
Hast du noch ne Idee?
gruss
leah

Anzeige
muss passen o.T.
19.10.2015 10:48:21
ChrisL
.

AW: UserForm immer im Vordergrund
19.10.2015 10:58:06
Leah
Leider funktionierts nicht. Zudem bekomm ich beim schliessen der UF den Laufzeitfehler 424 'Objekt erforderlich' und springt auf die Zeile: txFocus.SetFocus.
Vielleicht gibt's ja noch eine andere Lösung.
gruss und danke
leah

AW: UserForm immer im Vordergrund
19.10.2015 10:59:16
Nepumuk
Hallo,
immer im Vordergrund und so bleiben, sprich auch wenn du ein anderes Fenster aktivierst soll das UserForm im Vordergrund bleiben, oder darf es dann auch in den Hintergrund?
Gruß
Nepumuk

Anzeige
AW: UserForm immer im Vordergrund
19.10.2015 11:12:44
Leah
Hi Nepumuk
Die UF soll nur beim öffnen im Vordergrund sein, wenn ein anderes Fenster aktiviert wird, kann sie in den Hintergrund.
Gruss
Leah

AW: UserForm immer im Vordergrund
19.10.2015 11:52:54
Nepumuk
Hallo,
teste mal:
Option Explicit

Private Declare PtrSafe Function SetWindowPos Lib "user32.dll" ( _
    ByVal hwnd As LongPtr, _
    ByVal hWndInsertAfter As LongPtr, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As LongPtr

Private Const HWND_TOPMOST As LongPtr = -1
Private Const HWND_NOTOPMOST As LongPtr = -2
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const GC_CLASSNAMEUSERFORM As String = "ThunderDFrame"

Private Sub CommandButton1_Click()
    Call Unload(Me)
End Sub

Private Sub UserForm_Activate()
    Dim lngptrHwnd As LongPtr
    lngptrHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, Caption)
    Call SetWindowPos(lngptrHwnd, HWND_TOPMOST, _
        0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE)
    Call SetWindowPos(lngptrHwnd, HWND_NOTOPMOST, _
        0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE)
End Sub

Gruß
Nepumuk

Anzeige
AW: UserForm immer im Vordergrund
19.10.2015 13:41:16
Leah
Hallo Nepumuk
Vielen Dank, leider funktioniert das auch nicht. Wenn Excel schon offen, aber minimiert wird und ich die Datei öffne, bleibt auch die UF im Hintergrund.
Habs jetzt aber doch geschafft mit einer versteckten TextBox und zwar so:
Private Sub UserForm_Initialize()
Message.txFocus.SetFocus
End Sub
Vielen Dank für eure liebe Hilfe, echt super, dass ihr euch immer so Zeit nehmt. Hab schon echt viel von diesem Forum gelernt.
Ganz liebe Grüsse
Leah
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

UserForm immer im Vordergrund halten in Excel VBA


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Deine UserForm immer im Vordergrund bleibt, während Excel minimiert ist, kannst Du den folgenden VBA-Code verwenden. Dieser sollte im ThisWorkbook-Modul platziert werden:

Private Declare PtrSafe Function SetWindowPos Lib "user32.dll" ( _
    ByVal hwnd As LongPtr, _
    ByVal hWndInsertAfter As LongPtr, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long) As LongPtr

Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As LongPtr

Private Const HWND_TOPMOST As LongPtr = -1
Private Const HWND_NOTOPMOST As LongPtr = -2
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const GC_CLASSNAMEUSERFORM As String = "ThunderDFrame"

Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    UserForm1.Show
    Dim lngptrHwnd As LongPtr
    lngptrHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, UserForm1.Caption)
    Call SetWindowPos(lngptrHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    Application.WindowState = xlNormal
End Sub

Dieser Code sorgt dafür, dass die UserForm in den Vordergrund gebracht wird, selbst wenn Excel minimiert ist.


Häufige Fehler und Lösungen

  • Fehler 424: Objekt erforderlich: Dies passiert häufig, wenn das Objekt (z.B. txFocus) nicht richtig deklariert oder initialisiert ist. Stelle sicher, dass die TextBox in der UserForm vorhanden ist und korrekt benannt wurde.

  • UserForm bleibt im Hintergrund: Wenn Deine UserForm nicht im Vordergrund bleibt, überprüfe, ob die SetWindowPos-Funktion korrekt aufgerufen wird und dass der richtige hWnd über FindWindowA gefunden wird.


Alternative Methoden

Wenn die oben genannte Methode nicht funktioniert, gibt es einige alternative Ansätze:

  1. ShowModal auf False setzen: Setze die Eigenschaft ShowModal der UserForm auf False. Dies hat jedoch den Nachteil, dass die UserForm möglicherweise in den Hintergrund gedrängt wird, wenn ein anderes Fenster aktiv ist.

  2. Versteckte TextBox verwenden: Füge eine versteckte TextBox hinzu und setze den Fokus darauf, um die UserForm in den Vordergrund zu bringen. Beispiel:

Private Sub UserForm_Initialize()
    Me.txFocus.SetFocus
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine UserForm erstellen kannst, die beim Öffnen einer Excel-Datei immer im Vordergrund bleibt:

  1. Erstelle eine neue UserForm in Deinem VBA-Projekt.
  2. Füge eine Label und eine versteckte TextBox hinzu.
  3. Verwende den oben genannten Code im ThisWorkbook-Modul.

Mit dieser Konfiguration wird die UserForm beim Öffnen der Datei immer im Vordergrund angezeigt.


Tipps für Profis

  • Du kannst die UserForm-Eigenschaft Show anpassen, um verschiedene Anzeigen zu testen.
  • Überprüfe regelmäßig die Window-Handles, um sicherzustellen, dass die UserForm immer korrekt funktioniert, insbesondere bei verschiedenen Excel-Versionen.
  • Verwende die Taskleiste-Einstellungen, um sicherzustellen, dass Excel nicht immer im Vordergrund bleibt, wenn Du mit mehreren Fenstern arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die UserForm so einstellen, dass sie beim Schließen wieder in den Hintergrund geht?
Du kannst die UserForm_QueryClose-Ereignisprozedur verwenden, um die UserForm zu schließen und den Fokus zurück auf Excel zu setzen.

2. Was tun, wenn Excel immer minimiert geöffnet wird?
Überprüfe Deine Excel-Einstellungen und stelle sicher, dass keine Makros oder Einstellungen vorhanden sind, die Excel beim Start minimieren.

3. Funktioniert dies in allen Excel-Versionen?
Der oben genannte Code ist für Excel 2010 und höher geeignet, stelle sicher, dass Du die PtrSafe-Deklarationen verwendest, wenn Du eine 64-Bit-Version von Excel benutzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige