Userform positioniert starten 03.06.2002
 

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