Динамическое и кардинальное изменение свойств пользовательской формы как элемента коллекции UserForms и как элемента коллекции VBComponents из кода VBA Excel.
Для реализации примеров создайте новую пользовательскую форму или используете имеющуюся, если допустимо изменение ее свойств.
Динамическое изменение свойств формы
Динамическое изменение (редактирование) свойств пользовательской формы как элемента коллекции UserForms в процессе выполнения кода VBA Excel (процедуры UserForm_Initialize):
1 2 3 4 5 6 7 8 9 10 |
Private Sub UserForm_Initialize() With Me 'Меняем заголовок формы .Caption = "Новый заголовок" 'Изменяем цвет фона .BackColor = vbGreen 'Задаем новую ширину .Width = 300 End With End Sub |
Разместите код в модуле формы и запустите его. Форма откроется с динамически (в процессе выполнения инициализации) измененными свойствами.
После закрытия формы вы увидите, что шаблон формы в редакторе VBA никак не изменился, все свойства сохранились в первоначальных настройках.
Кардинальное изменение свойств формы
Кардинальное изменение (редактирование) свойств пользовательской формы как элемента коллекции VBComponents с помощью кода VBA Excel:
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub EditFormVBComponents() With ThisWorkbook.VBProject.VBComponents.Item("UserForm1") 'Активируем форму и меняем ее свойства .Activate 'Меняем заголовок формы .Properties("Caption") = "Новый постоянный заголовок" 'Изменяем цвет фона .Properties("BackColor") = vbYellow 'Задаем новую ширину .Properties("Width") = 500 End With End Sub |
Разместите код в стандартном модуле и запустите его. Вы увидите, что изменились первоначальные свойства шаблона формы в редакторе VBA и выглядит она по-новому.
Точно так же можно изменить (отредактировать) первоначальные настройки импортированной формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Private Sub ImportEdit() 'On Error Resume Next With ThisWorkbook.VBProject.VBComponents 'Импортируем форму в текущую книгу из файла UserForm1.frm .Import "C:\Тестовая\UserForm1.frm" 'Информация из файла .frx импортируется автоматически With .Item("UserForm1") 'Активируем форму и меняем ее свойства .Activate 'Меняем заголовок формы .Properties("Caption") = "Новый заголовок (Caption)" 'Изменяем цвет фона .Properties("BackColor") = vbBlue 'Задаем новую ширину .Properties("Width") = 400 End With End With 'Если нужно просмотреть форму, добавляем ее в коллекцию UserForms With UserForms.Add("UserForm1") 'Отображаем форму для просмотра .Show End With End Sub |
Строка On Error Resume Next
необходима для проведения экспериментов по изменению свойств пользовательской формы, так как, если форма уже импортирована, повторная попытка импорта вызовет ошибку.