Ungebundene Userform immer im Vordergrund halten
Schritt-für-Schritt-Anleitung
Um eine ungebundene Userform in Excel VBA immer im Vordergrund zu halten, kannst du den folgenden VBA-Code verwenden. Achte darauf, den Code in das richtige Modul einzufügen. Hier ist, wie du vorgehen kannst:
- Öffne den VBA-Editor (Drücke
ALT + F11
).
- Füge eine neue Userform hinzu, falls du das noch nicht gemacht hast.
- Klicke doppelt auf die Userform, um den Code-Editor zu öffnen.
- Füge den folgenden Code in die Userform ein:
Option Explicit
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "User32" ( _
ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Enum SWP_Flags
SWP_NOSIZE = &H1
SWP_NOMOVE = &H2
SWP_NOACTIVATE = &H10
SWP_SHOWWINDOW = &H40
End Enum
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Sub UserForm_Activate()
Call prcSetForeground
End Sub
Private Sub prcSetForeground()
SetWindowPos GetHandle, HWND_TOPMOST, 0&, 0&, 0&, 0&, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
End Sub
Private Function GetHandle() As Long
Select Case Val(Application.Version)
Case 8 'Office 97
GetHandle = FindWindow("ThunderXFrame", Me.Caption)
Case Else 'ab Office 2000
GetHandle = FindWindow("ThunderDFrame", Me.Caption)
End Select
End Function
- Schließe den VBA-Editor und teste die Userform.
Häufige Fehler und Lösungen
Alternative Methoden
Eine andere Möglichkeit, die Userform im Vordergrund zu halten, ist die Verwendung von Timer-Events, um den Vordergrundstatus regelmäßig zu überprüfen. Hier ist ein einfaches Beispiel:
Private Sub UserForm_Activate()
Application.OnTime Now + TimeValue("00:00:01"), "SetUserFormOnTop"
End Sub
Sub SetUserFormOnTop()
' Dein Code zum Setzen der Userform im Vordergrund
Call prcSetForeground
' Timer erneut setzen
Application.OnTime Now + TimeValue("00:00:01"), "SetUserFormOnTop"
End Sub
Praktische Beispiele
Hier ist eine Beispielmappe, die du verwenden kannst, um die Funktionsweise zu testen: Beispielmappe herunterladen.
Du kannst die Userform starten und dann Excel minimieren oder ausblenden, um zu sehen, ob die Userform immer noch sichtbar bleibt.
Tipps für Profis
- Nutze
F7
im VBA-Editor, um schnell zwischen der Design- und der Code-Ansicht der Userform zu wechseln.
- Experimentiere mit den
SWP_Flags
, um die Funktionalität deiner Userform zu optimieren.
- Halte den Code modular, um die Wartung und Lesbarkeit zu verbessern.
FAQ: Häufige Fragen
1. Warum funktioniert der Code nicht bei mir?
Stelle sicher, dass du den Code korrekt in die Userform eingefügt hast und dass ShowModal
auf False
gesetzt ist.
2. Was ist der Unterschied zwischen ThunderXFrame
und ThunderDFrame
?
Diese Bezeichnungen beziehen sich auf unterschiedliche Versionen von VBA-Userforms. ThunderXFrame
wird in Office 97 verwendet, während ThunderDFrame
ab Office 2000 verwendet wird.
3. Kann ich den Code auch in einem Arbeitsblatt verwenden?
Der Code ist speziell für Userforms gedacht. Du solltest ihn in einem Userform-Modul verwenden, nicht in einem Arbeitsblatt oder regulären Modul.