Можно ли центрировать формы окон с помощью VBA? - PullRequest
0 голосов
/ 19 октября 2018

Мой макрос VBA форматирует USB-накопитель перед тем, как скопировать на него данные.Весь процесс уже работает довольно хорошо.
Так что проблема в том, что окно Windows Format Tool открывается где-то в верхнем левом углу экрана, а не так, как я хочу, по центру и довольно в середине экрана.,

Так есть ли возможность открыть их по центру или, если нет, есть ли что-нибудь для их последующего центрирования?

Вот как начинается окно:

Private Sub format_drive(selected_volume)        
    Dim Result&, Drive&
    varray = Split(selected_volume, ":")
    Drive = Asc(varray(0)) - 65
    Result = SHFormatDrive(0, Drive, SHFD_CAPACITY_DEFAULT, SHFD_FORMAT_QUICK)
End Sub

1 Ответ

0 голосов
/ 19 октября 2018

Если это макрос, то должно быть родительское приложение, скорее всего, 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...