UserForm immer im Vordergrund

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: UserForm immer im Vordergrund
von: Leah
Geschrieben am: 19.10.2015 07:43:09

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

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: ChrisL
Geschrieben am: 19.10.2015 09:40:57
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

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: Leah
Geschrieben am: 19.10.2015 10:16:09
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

Bild

Betrifft: muss passen o.T.
von: ChrisL
Geschrieben am: 19.10.2015 10:48:21
.

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: Leah
Geschrieben am: 19.10.2015 10:58:06
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

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: Nepumuk
Geschrieben am: 19.10.2015 10:59:16
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

Bild

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

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: Nepumuk
Geschrieben am: 19.10.2015 11:52:54
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

Bild

Betrifft: AW: UserForm immer im Vordergrund
von: Leah
Geschrieben am: 19.10.2015 13:41:16
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "UserForm immer im Vordergrund"