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 Long) As 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.