Как предотвратить автономную усадку / расширение Excel UserForm? - PullRequest
0 голосов
/ 06 июня 2019

Мои пользовательские формы Excel содержат различные объекты, включая текстовые поля, поля со списком, переключатели и т. Д. Пользовательская форма и объекты пользовательской формы уменьшаются и расширяются, когда мой ноутбук находится на док-станции, а окно VBA открыто на монитор большего размера.

Когда я получаю доступ к редактору UserForm на вкладке Forms в VBA, я могу перетащить маркеры изменения размера UserForm, и объекты в UserForm немедленно вернутся в исходное состояние, но я хочу сделать это программно, чтобы конечный пользователь не будет иметь дело с сокращенными / расширенными пользовательскими формами.

Я пытался изменить размер пользовательской формы при открытии (UserForm_Initialize), но кажется, что сжатие / расширение происходит, когда пользовательская форма не активна, это означает, что изменение размера пользовательской формы действует только для возврата пользовательской формы в ее сокращенное / расширенное состояние а не его первоначальное состояние.

Sub UserForm_Initialize()

 Call ResizeUserform(Me)

End Sub

Sub ResizeUserform(UserForm_Name As Object)

 UserForm_Name.Width = UserForm_Name.Width + 0.001
 UserForm_Name.Width = UserForm_Name.Width - 0.001

 UserForm_Name.Height = UserForm_Name.Height + 0.001
 UserForm_Name.Height = UserForm_Name.Height - 0.001

End Sub

1 Ответ

0 голосов
/ 06 июня 2019

Не делайте форму максимально развернутой. «Развернутый» означает, что вы не знаете во время разработки, каким будет размер формы, потому что вы делаете это в зависимости от того, на каком мониторе он отображается.

Увеличенный монитор = увеличенная максимизированная форма, это дизайн.

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


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

...