Если это макрос, то должно быть родительское приложение, скорее всего, Excel.Когда пользовательская форма запускается из-под Excel, форма будет размещена в активном окне (это может быть развернуто).Если вы хотите изменить положение вашей формы taylor, то следующий образец для ваших нужд:
Private Sub UserForm_initialize()
Me.Show vbModeless
With Me ' this must come after .Show
.Top = (Abs(Application.Top) + Application.Height - .Height)/2
.Left = (Abs(Application.Left) + ActiveWindow.Width - .Width)/2
End With
Application.Top
может быть отрицательным, Abs()
применяется для обработки.Это не самое правильное, но безопасное.В качестве альтернативы вы можете использовать ActiveWindows
:
With Me
.Top = (Application.ActiveWindow.Height - .Height)/2
.Left = (Application.ActiveWindow.Width - .Width)/2
End With
На продвинутом уровне вы можете использовать GetDeviceCaps(HDC hdc, HORZRES)
и GetDeviceCaps(HDC hdc, VERTRES)
, чтобы получить количество пикселей вашего экрана.Смотрите это больше: GetDeviceCaps