Класс MultiPage — набор страниц VBA

Класс MultiPage — набор страниц VBA Макросы на VBA

Компонент 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 оставьте пустым.

Форма с компонентом MultiPage

Теперь нам нужно прописать код для формы, жмем в окне проектов на наш объект 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 и написал небольшой пример.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий