Excel 32 vs 64 Bit: UserForms und Bildschirmauflösungen anpassen
Schritt-für-Schritt-Anleitung
-
UserForm initialisieren: Füge den folgenden Code in das Initialize-Ereignis deiner UserForm ein.
Private Sub UserForm_Initialize()
Me.Width = ScreenResolution(1)
Me.Height = (ScreenResolution(1) / 4) * 3
End Sub
-
Funktion zur Bildschirmauflösung deklarieren: Lege im Modul den folgenden Code an.
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Enum ScreenArgs
HORIZONTAL
VERTIKAL
End Enum
Public Function ScreenResolution(HV As ScreenArgs) As Long
If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function
-
Anpassung für 32-Bit und 64-Bit: Verwende den folgenden Code, um sicherzustellen, dass die Funktion sowohl in 32-Bit als auch in 64-Bit Umgebungen funktioniert.
#If VBA7 And Win64 Then
Public Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As LongLong) As LongLong
#Else
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#End If
Public Enum ScreenArgs
Horizontal
VERTIKAL
End Enum
Public Function ScreenResolution(HV As ScreenArgs) As Long
If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function
Häufige Fehler und Lösungen
-
Fehler bei der Funktion GetSystemMetrics: Wenn deine Funktion nicht funktioniert, überprüfe, ob du das Schlüsselwort PtrSafe verwendest, insbesondere wenn du in einer 64-Bit-Version von Excel arbeitest.
-
Typenkonflikte: Der Typ LongLong ist nur für 64-Bit Office geeignet. Stelle sicher, dass du LongPtr für 32-Bit Office verwendest, um Fehler zu vermeiden.
Alternative Methoden
Du kannst auch die Application.Width und Application.Height Eigenschaften verwenden, um die Größe deiner UserForm dynamisch anzupassen, je nach Bildschirmauflösung. Dies kann besonders nützlich sein, wenn du die Bildschirmauflösung abfragen möchtest, ohne die API-Funktion GetSystemMetrics zu verwenden.
Praktische Beispiele
Ein praktisches Beispiel könnte das Erstellen eines Formulars sein, das sich automatisch an die Bildschirmgröße anpasst. Hier ist ein einfacher Code:
Private Sub UserForm_Initialize()
Me.Width = Application.Width * 0.8
Me.Height = Application.Height * 0.8
End Sub
Dies stellt sicher, dass die UserForm 80% der Bildschirmbreite und -höhe einnimmt, was für die meisten Benutzer angenehm ist.
Tipps für Profis
-
Verwende Debug.Print, um Werte während der Ausführung zu überprüfen. So kannst du schnell erkennen, ob die Bildschirmauflösung korrekt ermittelt wird.
-
Berücksichtige bei der Gestaltung deiner UserForm die verschiedenen Bildschirmauflösungen und DPI-Einstellungen. Das Anpassen der Größe ist nicht nur für die Benutzerfreundlichkeit wichtig, sondern auch für die Zugänglichkeit.
FAQ: Häufige Fragen
1. Wie kann ich herausfinden, ob ich Excel 32 oder 64 Bit verwende?
Du kannst dies überprüfen, indem du zu Datei > Konto > Über Excel gehst. Dort findest du die Version und ob sie 32 oder 64 Bit ist.
2. Was passiert, wenn ich den Typ LongLong in einer 32-Bit-Version verwende?
Es kann zu Laufzeitfehlern kommen, da LongLong nicht unterstützt wird. Stelle sicher, dass du Long oder LongPtr für 32-Bit verwendest.