Компонент Multipage vba языка — набор страниц, предоставляет возможность добавлять на поверхность формы несколько страниц, это эффективно в том случае, если элементов управления слишком много, и все они не умещаются на поверхности.
Multigape предоставляет набор из нескольких страниц, каждая из которых содержит собственный заголовок и собственный набор элементов управления. Для перехода между страницами достаточно кликнуть по заданному корешку.
После того, как вы выбрали компонент MultiPage в окне ToolBox и перетащили его на поверхность формы (UserForm), у вас будет только две вкладки для Набора страниц. Если вы кликните правой кнопкой мыши по корешку MultiPage vba, то вам откроется контекстное меню, со следующими пунктами:
- NewPage – позволяет добавить новую страницу к уже имеющимся. Обратите внимание, имена корешков страниц назначаются автоматически (Page1, Page2, …. , PageN).
- DeletePage – удаляет ту страницу, по корешку которой вы кликнули.
- Rename – позволяет переименовать выбранную страницу, аналогично, вы можете сделать тоже самое в окне свойств (свойство Caption).
- Move – переместить выбранную страницу. После клика вам откроется небольшое диалоговое окно, где вы сможете переместить выбранную вкладку в заданном направлении.
Основные свойства для класса Multipage vba языка следующие:
MultiRow – свойство языка vba может принимать логическое True или False. Само свойство актуально в том случае, если вкладок страниц слишком много и они не помещаются в на поверхности формы. Если будет установлено значение False, то все корешки будут находиться на одной линии, для перехода к тем вкладкам, которые не видно, будут добавлены дополнительные кнопки. Если значение установлено в True – то при большом количестве вкладок, они будут располагаться в несколько строк.
TabOrientation – позволяет задать, где будут расположены корешки страниц, свойство предоставляет четыре значения: fmTabOrientationTop – расположении вверху, fmTabOrientationBottom – внизу, fmTabOrientationLeft – слева и fmTabOrientationRight – справа.
SelectedItem – содержит ссылку на объект выбранной страницы
Value – свойство позволяет получить номер той вкладки страницы, которая выбрана в данный момент, нумерация начинается с нуля.
Style – определяет стиль вкладок: fmTabStyleTabs – в виде закладок, fmTabStyleButton – в виде кнопок и fmTabStyleNone – вкладки отсутствуют
Основным событием для класса MultiPage является событие Change, оно возникает при переходе между вкладками.
Хорошо, теперь давайте напишем простой пример с компонентом VBA MultiPage.
Добавьте в окно Проектов новый модуль и форму (меню Insert, пункты UserForm и Module). Я всегда даю соответствующие имена для формы и модуля (свойство Name), в данном случае MPModule и MPForm. Теперь надо настроить внешний вид формы. Нм понадобятся только три элемента управления из окна ToolBox (меню View, пункт Toolbox):
MultiPage – добавляем а форму данный элемент управления, у вас автоматически появятся два флажка, кликаем по одному из флажков и жмем New Page, это добавить третью вкладку. В свойстве Caption пропишите для каждой вкладки: Флажок 1, Флажок 2 и Флажок 3.
ListBox – добавьте на поверхность объекта MultiPage список (ListBox), точнее, три списка, по одному на каждую вкладку.
Label – в самый низ формы добавьте компонент Надпись, он должен находится на поверхности формы UserForm. Свойство Caption оставьте пустым.
Теперь нам нужно прописать код для формы, жмем в окне проектов на наш объект UserForm (MPForm) и нажимаем кнопку View Code. В окне редактора кода прописываем следующие процедуры:
Private Sub MultiPage1_Change() Label1.Caption = MultiPage1.SelectedItem.Caption End Sub Private Sub UserForm_Initialize() For i = 0 To 50 ListBox1.AddItem "число_" & i Next For i = 50 To 100 ListBox2.AddItem "число_" & i Next For i = 100 To 150 ListBox3.AddItem "число_" & i Next Label1.FontSize = 16 Label1.ForeColor = &H1055F2 Label1.TextAlign = fmTextAlignCenter Label1.Caption = MultiPage1.SelectedItem.Caption End Sub |
Давайте разберем код:
MultiPage1_Change – тут происходит обработка события Change, которое возникает при клике по флажкам. Каждый раз, когда мы будем переходить на ту или иную вкладку, в свойство Caption объекта Label будет записываться название выбранного флажка.
UserForm_Initialize – данная процедура будет выполняться при инициализации формы. Тут есть три цикла for, по одному на каждый объект ListBox, по сути, в цикле происходит простое заполнение списков. Далее идут настройки свойств:
- Label1.FontSize – задаем размер шрифта для объекта Надпись
- Label1.ForeColor – задаем цвет текста, которые отображается в поле Надпись
- Label1.TextAlign – выравниваем шрифт по центру
- Label1.Caption – тут мы прописываем начальное значение для свойства Caption.
В принципе все, не забывайте, что в редакторе кода для модуля (макроса), нужно прописать процедуру, которая будет выводить форму:
Sub MPModule() MPForm.Show End Sub |
Ну, вот и все, в статье мы кратко рассмотрели класс MultiPage VBA и написал небольшой пример.