Userform anhand der Bildschirmauflösung zoomen

 

Userforms werden unabhängig von der Bildschirmauflösung immer mit dem selbern Zoomfaktor angezeigt. Das bedeutet, dass Userforms, welche mit einer Bildschirmauflösung von 1600 x 1200 Punkten entwickelt wurden auf einem Computer mit einer Auflösung von 1024 x 768 überdimensional groß erscheinen.

Um dieses Problem zu umgehen, muss abhängig von der gewählten Auflösung die Userform dynamisch gezoomt werden.

Mit folgendem VBA-Code lässt sich dies realisieren.
Erfassen Sie den Code in einem Code-Modul.

 


'** API-Funktion zum Auslesen der Bildschirmauflösung
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As LongAs Long


Sub start_zoom()

'** Dimensionierung der Bariablen
Dim Y_Resol_Std '100 % Standard-Auflösung
Dim Y_Resol 'ausgelesene Auflösung
Dim resol 'umgerechnete Auflösung

'** Zoomfaktor manuell vorgeben
resol = 100

'** Standardgröße festlegen (Höhe 1024 = 100%)
Y_Resol_Std = 1024

'** Auslesen der Y-Resolution
Y_Resol = GetSystemMetrics(SM_CYSCREEN)

'** Prozentuale Umrechnung der ausgelesenen Resolution in Bezug
'** auf die Standard Y-Resolution
resol = Y_Resol * 100 / Y_Resol_Std

'** Zoomen der Userform
frmForm.Zoom = resol

'** Größe der Userform anpassen
frmForm.Width = frmForm.Width * resol / 100
frmForm.Height = frmForm.Height * resol / 100

'** Userform anzeigen
frmForm.TextBox1.Value = resol
frmForm.Show

End Sub

 



Damit der Code funktioniert, müssen Sie eine UserForm mit der Bezeichnung "frmForm" anlegen, auf der Sie beliebige Steuerelemente zu Testzwecken plazieren können.