X-Button in einer VBA UserForm ausblenden
Schritt-für-Schritt-Anleitung
Um den Schließen-Button (X) in einer VBA UserForm auszublenden, kannst Du die folgenden Schritte befolgen:
- Öffne den VBA-Editor in Excel (Alt + F11).
- Füge eine neue UserForm hinzu oder wähle eine bestehende UserForm aus.
- Kopiere den folgenden Code in das Code-Fenster der UserForm:
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal _
hwnd As Long) As Long
Private Const GWL_STYLE As Long = -16
Private Const WS_SYSMENU As Long = &H80000
Private hWndForm As Long
Private bCloseBtn As Boolean
Private Sub UserForm_Initialize()
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
bCloseBtn = False
SetUserFormStyle
End Sub
Private Sub SetUserFormStyle()
Dim frmStyle As Long
If hWndForm = 0 Then Exit Sub
frmStyle = GetWindowLong(hWndForm, GWL_STYLE)
If bCloseBtn Then
frmStyle = frmStyle Or WS_SYSMENU
Else
frmStyle = frmStyle And Not WS_SYSMENU
End If
SetWindowLong hWndForm, GWL_STYLE, frmStyle
DrawMenuBar hWndForm
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
- Füge einen CommandButton hinzu, um die UserForm zu schließen. Du kannst den Code anpassen, um die Schaltfläche zu aktivieren oder zu deaktivieren.
Häufige Fehler und Lösungen
Alternative Methoden
Falls Du den X-Button nicht über API-Funktionen ausblenden möchtest, kannst Du auch eine einfache Lösung mit einem Label verwenden:
- Füge ein Label an der Stelle des X-Buttons hinzu.
- Setze die Hintergrundfarbe des Labels auf die gleiche Farbe wie die Titelleiste.
- Verstecke den X-Button mithilfe des oben beschriebenen Codes.
Praktische Beispiele
Hier ein einfaches Beispiel für das Ausblenden des X-Buttons in einer UserForm mit einem CommandButton:
Private Sub CommandButton1_Click()
' Hier kannst Du die Logik einfügen, die beim Klicken des Buttons ausgeführt werden soll.
Unload Me
End Sub
Verwende diese Struktur, um die Funktionalität Deiner UserForm zu erweitern.
Tipps für Profis
- Nutze das
Exit Sub
-Kommando, um die Ausführung eines Makros frühzeitig zu beenden, wenn bestimmte Bedingungen nicht erfüllt sind.
- Halte Deinen Code sauber und dokumentiere, was jede Funktion macht. Dies hilft nicht nur Dir, sondern auch anderen, die Deinen Code lesen.
- Experimentiere mit verschiedenen Layouts in Deiner UserForm, um das Benutzererlebnis zu verbessern.
FAQ: Häufige Fragen
1. Wie kann ich die Größe der UserForm ändern?
Du kannst die Größe der UserForm im Eigenschaftenfenster anpassen oder im Code mit Me.Width
und Me.Height
.
2. Ist dieser Code auch in Excel 97 anwendbar?
Ja, der Code sollte in Excel 97 und neueren Versionen funktionieren, solange die API-Funktionen unterstützt werden.
3. Was mache ich, wenn ich weitere Buttons in der Titelleiste benötige?
Du kannst die WS_SYSMENU
-Konstante anpassen, um spezifische Buttons in der Titelleiste zu aktivieren oder zu deaktivieren.