UserForm Bildschirmskalierung anpassen
Schritt-für-Schritt-Anleitung
Um die Skalierung eines Excel-UserForms unabhängig von den Windows-Anzeigeeinstellungen anzupassen, folge diesen Schritten:
-
Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.
-
Füge den folgenden Code ein:
Option Explicit
Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32.dll" () As LongPtr
Private Declare PtrSafe Function GetDC Lib "user32.dll" ( _
ByVal hwnd As LongPtr) As LongPtr
Private Declare PtrSafe Function ReleaseDC Lib "user32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal hdc As LongPtr) As Long
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32.dll" ( _
ByVal hdc As LongPtr, _
ByVal nIndex As Long) As Long
Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1
Private Const LOGPIXELS_X As Long = 88
Private Const LOGPIXELS_Y As Long = 90
Private Sub UserForm_Activate()
Dim sngWidth As Single, sngHeight As Single
sngWidth = Width
sngHeight = Height
Left = 0
Top = 0
Width = GetSystemMetrics(SM_CXSCREEN) * GetResolution(LOGPIXELS_X)
Height = GetSystemMetrics(SM_CYSCREEN) * GetResolution(LOGPIXELS_Y)
Zoom = Fix(Application.Min(Width / sngWidth, Height / sngHeight) * 100)
End Sub
Private Function GetResolution(ByVal pvlngLogPixel As Long) As Single
Dim lngptrhWndDesk As LongPtr, lngptrhDCDesk As LongPtr
Dim lnglogPixel As Long
lngptrhWndDesk = GetDesktopWindow()
lngptrhDCDesk = GetDC(lngptrhWndDesk)
lnglogPixel = GetDeviceCaps(lngptrhDCDesk, pvlngLogPixel)
Call ReleaseDC(lngptrhWndDesk, lngptrhDCDesk)
GetResolution = 72 / lnglogPixel
End Function
-
Teste das UserForm: Speichere deine Änderungen und teste das UserForm, um zu sehen, ob die Anpassungen erfolgreich waren.
Häufige Fehler und Lösungen
Alternative Methoden
Falls der obige VBA-Code nicht die gewünschten Ergebnisse liefert, kannst du auch die Excel-Anzeigeeinstellungen manuell anpassen:
- Gehe zu
Einstellungen > System > Anzeige.
- Stelle den Skalierungsfaktor für den Bildschirm ein.
- Teste danach dein UserForm, um die Auswirkungen der Änderungen zu sehen.
Zusätzlich kannst du auch verschiedene Zoom-Einstellungen in Excel ausprobieren, um die Darstellung zu verbessern.
Praktische Beispiele
Ein Beispiel für die Anwendung des Codes könnte wie folgt aussehen: Wenn du ein UserForm für die Dateneingabe in einem Expertensystem erstellst, kannst du die Größe des Formulars anhand der Bildschirmauflösung und der Skalierung automatisch anpassen.
Hier ist ein einfacher Anwendungsfall:
- Erstelle ein UserForm mit Textfeldern und Buttons für die Dateneingabe.
- Implementiere den oben genannten VBA-Code, um die Darstellung zu optimieren.
Tipps für Profis
- Verwende dynamische Layouts: Nutze die Eigenschaften der Steuerelemente, um ein flexibles Layout zu erstellen, das sich an verschiedene Bildschirmgrößen anpasst.
- Teste auf verschiedenen Monitoren: Stelle sicher, dass das UserForm auf unterschiedlichen Bildschirmen und mit verschiedenen Excel-Anzeigeeinstellungen gut aussieht.
- Dokumentiere den Code: Füge Kommentare in deinen VBA-Code ein, damit andere (oder du selbst in der Zukunft) schnell verstehen können, was jeder Teil des Codes bewirken soll.
FAQ: Häufige Fragen
1. Warum wird mein UserForm nach der Anpassung immer noch verzerrt?
Es könnte sein, dass einige Steuerelemente nicht korrekt ausgerichtet sind oder dass der Code nicht vollständig implementiert wurde.
2. Welche Excel-Version benötige ich für diese Lösung?
Der bereitgestellte VBA-Code ist mit Excel 2010 und höher kompatibel. Stelle sicher, dass du eine 64-Bit-Version von Excel verwendest, wenn du den PtrSafe-Schlüsselwort benötigst.
3. Kann ich auch Excel VBA Kalender in UserForms integrieren?
Ja, du kannst zusätzliche Steuerelemente wie Kalendersteuerungen in dein UserForm einfügen, um die Dateneingabe zu erleichtern. Achte darauf, dass die Skalierung ebenfalls für diese Steuerelemente angepasst wird.