You can specify positioning at the Initialization event (when the userform is called), for example:
Private Sub UserForm_Initialize()
'Upper left
Me.StartUpPosition = 0
Dim Top As Double, Left As Double
Top = Abs(Application.Top) + (Application.Height - ActiveWindow.Height) + (Application.UsableHeight - ActiveWindow.UsableHeight)
Left = Abs(Application.Left) + ActiveWindow.Width - ActiveWindow.UsableWidth
Me.Top = Top
Me.Left = Left
End Sub
The other 3 corners would be:
'Upper right
Me.StartUpPosition = 0
Dim Top As Double, Left As Double
Top = Abs(Application.Top) + (Application.Height - ActiveWindow.Height) + (Application.UsableHeight - ActiveWindow.UsableHeight)
Left = Abs(Application.Left) + (Application.Width) - (Me.Width + 10)
Me.Top = Top
Me.Left = Left
'Lower left
Me.StartUpPosition = 0
Dim Top As Double, Left As Double
Top = Abs(Application.Top) + (Application.Height) - (Me.Height + 10)
Left = Abs(Application.Left) + ActiveWindow.Width - ActiveWindow.UsableWidth
Me.Top = Top
Me.Left = Left
'Lower right
Me.StartUpPosition = 0
Dim Top As Double, Left As Double
Top = Abs(Application.Top) + (Application.Height) - (Me.Height + 10)
Left = Abs(Application.Left) + (Application.Width) - (Me.Width + 10)
Me.Top = Top
Me.Left = Left