Позиция формы при первом отображении на экране в VBA Excel. Свойство UserForm.StartUpPosition и его параметры. Положение, расположение формы при открытии.
Позиция формы при открытии
Положение пользовательской формы при первом отображении на экране зависит в VBA Excel от свойства UserForm.StartUpPosition. Может использоваться для записи и чтения.
Параметры свойства StartUpPosition:
Параметр | Значение | Описание |
---|---|---|
Manual | 0 | Параметр начальной позиции формы не задан. |
CenterOwner | 1 | Расположение по центру окна приложения, к которому относится UserForm. |
CenterScreen | 2 | Расположение по центру всего экрана компьютера. |
WindowsDefault | 3 | Расположение в левом верхнем углу экрана компьютера. |
Свойство UserForm.StartUpPosition можно установить и программным способом из кода VBA Excel, и вручную через окно свойств.
Изменение начальной позиции
Для реализации примера по присвоению свойству UserForm.StartUpPosition разных параметров, создадим на рабочем листе кнопку CommandButton1 и переименуем ее в StartUpPosition:
Изначально, ячейка «A1» должна быть пустой или равна нулю, так как ее значение мы будем использовать в качестве параметра свойства StartUpPosition.
А также, нам понадобится форма, которую мы будем открывать кнопкой StartUpPosition, расположенной на рабочем листе:
Код VBA Excel для поочередного изменения начальной позиции формы при открытии:
1 2 3 4 5 6 7 8 9 10 11 |
Private Sub CommandButton1_Click() Dim myStart As Byte myStart = Cells(1, 1) With UserForm3 .StartUpPosition = myStart .Label1.Caption = "StartUpPosition = " & myStart .Show End With Cells(1, 1) = Cells(1, 1) + 1 If Cells(1, 1) = 4 Then Cells(1, 1) = 0 End Sub |
Теперь, поочередно открывая кнопкой на листе пользовательскую форму и закрывая ее своей кнопкой, мы можем на практике ознакомиться с позицией формы при первом отображении в зависимости от заданного параметра.
Обратите внимание, когда и как изменится позиция формы при открытии, если изменить ее свойства «Left» и «Top»:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Private Sub CommandButton1_Click() Dim myStart As Byte myStart = Cells(1, 1) With UserForm3 .StartUpPosition = myStart .Label1.Caption = "StartUpPosition = " & myStart .Left = 100 .Top = 200 .Show End With Cells(1, 1) = Cells(1, 1) + 1 If Cells(1, 1) = 4 Then Cells(1, 1) = 0 End Sub |