Как заставить пользовательскую форму и активный документ стоять рядом - PullRequest
2 голосов
/ 10 марта 2019

Я создаю проект с MS Word , состоящий из активного документа и userform.

Я хочу, чтобы документ и пользовательская форма стояли рядом друг с другом. Проблема:

  • Если я установлю свойство modal userform = true, документ не может быть отредактирован
  • , а если свойство modal = false, то документ при увеличении может быть покрыт пользовательской формой. Я хочу, чтобы оба были видимыми и активными.

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

Есть ли какой-нибудь код VBA, чтобы сделать это?!

За все ваше содействие очень ценится. Спасибо.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Вы можете принудительно Application или UserForm изменить его свойства.

Вы можете использовать

  • Left для горизонтальной оси
  • Top для вертикальной оси
  • Height и Width говорят сами за себя.

Если вы знакомы с position:absolute; в они работают точно так же

enter image description here

Так что если у меня приложение Excel в полноэкранном режиме.

enter image description here

с этим кодом, я, нажав кнопку, могу открыть UserForm, убедившись, что он не перекрывает лист Excel.

Private Sub CommandButton1_Click()
    UserForm1.Show (0)
    Application.WindowState = xlNormal
    Application.Width = 800
    Application.Left = 0
    Application.Top = 0
    UserForm1.Left = 850
End Sub

enter image description here

Очевидно, вы можете поиграть со свойствами, в зависимости от желаемого результата.

0 голосов
/ 10 марта 2019

Может попробовать это с немодальным userform для размещения окон, подобных этому

enter image description here

Sub test()
Application.ActiveWindow.WindowState = wdWindowStateNormal
Application.ActiveWindow.Top = Application.Top
Application.ActiveWindow.Left = Application.Left
Application.ActiveWindow.Height = Application.UsableHeight
Application.ActiveWindow.Width = Application.UsableWidth / 2
'ActiveWindow.ActivePane.View.Zoom.Percentage = 50  , may control zoom here



UserForm1.Show
UserForm1.StartUpPosition = 0
UserForm1.ScrollBars = fmScrollBarsBoth
UserForm1.KeepScrollBarsVisible = fmScrollBarsBoth
UserForm1.Top = Application.Top
UserForm1.Left = Application.Left + Application.UsableWidth / 2
UserForm1.ScrollHeight = UserForm1.Height + 10
UserForm1.ScrollWidth = UserForm1.Width + 10
UserForm1.Height = Application.UsableHeight 
UserForm1.Width = Application.UsableWidth / 2
'UserForm1.Zoom = 70                 ' may control zoom
End Sub

Аналогичным образом модифицирующий код может размещаться вертикально мозаичным образом.

...