Eine Userform
muss nicht immer zentriert auf dem Bildschirm erscheinen,
einige API-Aufrufe helfen uns dabei die Position selbst
festzulegen:
'Bildschirmauflösung
Private Declare Function GetSystemMetrics Lib _
"user32" (ByVal nIndex As Long) As Long
Private Const SM_CYSCREEN As Long = 1
Private Const SM_CXSCREEN As Long = 0
'Position
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd _
As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal bRepaint As Long) As Long
'Starten einer Userform im Vollbildmodus
Private Sub UserForm_Activate()
BildschirmBreite = GetSystemMetrics(SM_CXSCREEN)
BildschirmHöhe = GetSystemMetrics(SM_CYSCREEN)
wHandle = FindWindow(vbNullString, Me.Caption)
MoveWindow wHandle, 0, 0, BildschirmBreite, BildschirmHöhe, 1
End Sub
Ein weiteres Beispiel, starten der Userform in der rechten oberen
Bildschirmecke mit einer Breite von 350 und einer Höhe von 450 Pixel:
'Rechte obere Ecke des Bildschirms, 350x450 Pixel groß
Private Sub UserForm_Activate()
BildschirmBreite = GetSystemMetrics(SM_CXSCREEN)
BildschirmHöhe = GetSystemMetrics(SM_CYSCREEN)
UserformBreite = 350
UserformHöhe = 450
wHandle = FindWindow(vbNullString, Me.Caption)
MoveWindow wHandle, BildschirmBreite - UserformBreite, _
0, UserformBreite, UserformHöhe, 1
End Sub
|