VBA разбросал пользовательскую форму на двойном экране (ноутбук 17 "против экрана 27") - PullRequest
1 голос
/ 26 марта 2020

У меня странная проблема при отображении пользовательской формы на двух экранах с разными размерами (хотя они оба 1920 x 1080)

Так что я подключил свой 17 "ноутбук к монитору Samsung 27" .

Я использую очень известный код при инициализации:

Private Sub UserForm_Initialize()

  Me.StartUpPosition = 0
  Me.Left = Application.Left + (0.5 * Application.Width) - (0.5 * Me.Width)
  Me.Top = Application.Top + (0.5 * Application.Height) - (0.5 * Me.Height)

End Sub

Это работает, как и должно, если я подключаю 2 монитора к ноутбуку и закрываю ноутбук.

Однако, если мой ноутбук открыт и я загружаю пользовательскую форму, все элементы управления кажутся не на своем месте. Дело в том, что это происходит только тогда, когда приложение активно на мониторе, если оно открыто на ноутбуке, все отображается правильно

Изображение режима дизайна: Design mode image

Когда пользовательская форма загружена, она выглядит следующим образом: Show image

Когда я перетаскиваю пользовательскую форму вокруг (всего 1 пиксель), пользовательская форма показывает правильно: Image after dragging

Есть ли способ исправить это? Я попробовал несколько вещей, таких как переустановка ширины и высоты каждого элемента управления при инициализации по кодам и т. Д., Но безуспешно.

Оглядывался в Google около 3 часов и не мог найти какой-либо способ помочь мне.

может, у вас, у Про, есть решение для магов c?

Заранее спасибо, С уважением!

1 Ответ

0 голосов
/ 26 марта 2020

FaneDuru sugestion работал, но вместо того, чтобы поместить его в событие инициализации, вам нужно поместить код в событие активации

...