Userform immer im Vordergrund halten in Excel 2013
Schritt-für-Schritt-Anleitung
Um eine Userform in Excel 2013 immer im Vordergrund zu halten, kannst du folgenden VBA-Code verwenden:
- Öffne deine Excel-Datei und gehe zur Entwicklertools-Registerkarte.
- Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
- Füge in das Modul deiner Userform folgenden Code ein:
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 SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const GC_CLASSNAMEUSERFORM As String = "ThunderDFrame"
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)
End Sub
- Schließe den VBA-Editor und teste die Userform. Sie sollte jetzt immer im Vordergrund bleiben, auch wenn du andere Excel-Dateien öffnest.
Häufige Fehler und Lösungen
-
Userform verschwindet nach Minimierung: Wenn die Userform nach der Minimierung der Mappe verschwindet, überprüfe, ob du den Code korrekt in das Userform-Modul eingefügt hast. Achte auch darauf, dass die Userform nicht modal ist.
-
Userform wird von anderen Fenstern überdeckt: Stelle sicher, dass der SetWindowPos
-Befehl im UserForm_Activate
-Ereignis korrekt aufgerufen wird.
-
Test in einer neuen Datei: Wenn der Code nicht funktioniert, teste ihn in einer neuen Excel-Datei, um sicherzustellen, dass keine anderen Makros oder Einstellungen das Verhalten beeinflussen.
Alternative Methoden
Eine alternative Methode, um die Userform immer im Vordergrund zu halten, besteht darin, eine zweite Excel-Anwendung zu verwenden:
- Öffne eine neue Instanz von Excel über VBA.
- Setze die Sichtbarkeit dieser neuen Instanz auf
False
.
- Starte die Userform aus dieser Anwendung.
Zusätzlich kannst du auch ein Add-In oder die Personal.xlsb
-Datei verwenden, um die Userform zu erstellen. Diese Methode kann jedoch komplizierter sein und ist möglicherweise nicht für jeden geeignet.
Praktische Beispiele
Wenn du die Userform in Excel VBA in den Vordergrund bringen möchtest, kannst du ein einfaches Beispiel verwenden, um dies zu demonstrieren. Erstelle eine Userform mit einem Button und füge den oben genannten Code hinzu. Beim Klicken auf den Button sollte die Userform erscheinen und immer im Vordergrund bleiben:
Private Sub CommandButton1_Click()
Me.Show
End Sub
Tipps für Profis
-
Verwendung von API-Funktionen: Das Nutzen von Windows-API-Funktionen wie SetWindowPos
ist eine effektive Methode, um die Kontrolle über Fenster in Excel zu übernehmen.
-
Debugging: Wenn dein Code nicht wie erwartet funktioniert, nutze die Debugging-Tools im VBA-Editor, um sicherzustellen, dass keine Fehler auftreten.
-
Vermeidung von Modal: Stelle sicher, dass deine Userform nicht modal ist, um die Flexibilität zu erhöhen und zu verhindern, dass sie andere Fenster blockiert.
FAQ: Häufige Fragen
1. Warum funktioniert der Code nicht in meiner Excel-Version?
Die Verwendung von PtrSafe
im Code ist notwendig, wenn du eine 64-Bit-Version von Excel 2013 oder neuer verwendest. Stelle sicher, dass du die richtige Version des Codes verwendest.
2. Kann ich den Code auch für Word-Tabellen verwenden?
Der Code ist spezifisch für Excel VBA und kann nicht direkt für Word verwendet werden. Für Word musst du eine separate Lösung entwickeln.
3. Was mache ich, wenn die Userform immer noch nicht immer im Vordergrund bleibt?
Überprüfe, ob andere Makros oder Add-Ins aktiv sind, die das Verhalten deiner Userform beeinflussen könnten. Manchmal kann auch eine Einstellung in Excel das Verhalten ändern.