Multipage1 pages в excel

Создание коллекции страниц с наборами элементов управления на пользовательской форме VBA Excel с помощью элемента управления MultiPage. Примеры кода.

UserForm.MultiPage – это элемент управления пользовательской формы, представляющий коллекцию страниц (Pages) как единый набор, позволяющий визуально разделить на отдельные страницы (Page) большой объем взаимосвязанной информации.

Элемент управления MultiPage

Элемент управления MultiPage очень удобен, когда большой объем информации может быть разделен на несколько категорий, каждая из которых размещается на отдельной странице.

Основное свойство коллекции страниц – Value, которое возвращает индекс текущей (активной) страницы (индексация начинается с нуля).

Основное событие (метод) коллекции страниц – Change, которое происходит в момент перехода между страницами.

На каждой странице элемента управления MultiPage размещается свой набор элементов управления. Этим коллекция страниц отличается от элемента TabStrip, у которого на каждой вкладке отображается один и тот же набор элементов управления.

По умолчанию в редакторе VBA Excel на элементе управления MultiPage отображены 2 вкладки. Добавить, удалить, переименовать или переместить вкладку можно через контекстное меню, кликнув по ярлыку страницы правой кнопкой мыши.

Контекстное меню ярлыков элемента управления MultiPage

  • New Page – добавление новой страницы;
  • Delete Page – удаление страницы;
  • Rename… – переименование страницы;
  • Move… – перемещение страницы.

Примеры кода VBA Excel с MultiPage

Пример 1
Добавление и удаление страниц элемента управления MultiPage с помощью кода VBA Excel.

Добавление 3-й, 4-й, 5-й и 6-й страниц к двум, которые уже есть по умолчанию:

Dim i As Byte

For i = 3 To 6

    MultiPage1.Pages.Add («Page» & i)

Next

Удаление второй страницы:

MultiPage1.Pages.Remove («Page2»)

MultiPage1.Pages.Remove (1)

Удаление всех страниц:

Подгон размеров элемента управления MultiPage полностью под размеры пользовательской формы:

With MultiPage1

    .Left = Me.Left

    .Top = Me.Top

    .Width = Me.Width

    .Height = Me.Height

End With

Пример 2
Добавление информации о новом сотруднике с помощью элемента управления MultiPage и запись в таблицу на рабочем листе Excel.

Для реализации примера понадобится следующая таблица:

Пустая таблица с шапкой на рабочем листе Excel

и проект пользовательской формы в редакторе VBA Excel:

Наименования страниц элемента управления MultiPage и текст надписей (Label) заданы непосредственно на проекте пользовательской формы. Кнопку будем переименовывать в коде, так как она используется на 1-й и 2-й страницах для перехода на следующую страницу, а на 3-й странице – для записи данных в таблицу.

Загрузка пользовательской формы с необходимыми параметрами:

Private Sub UserForm_Initialize()

    With MultiPage1

        ‘Подгоняем MultiPage1 под размеры

        ‘формы, оставив место под кнопку

        .Left = Me.Left

        .Top = Me.Top

        .Width = Me.Width

        .Height = Me.Height * 0.7

        ‘переходим на первую страницу

        .Value = 0

    End With

CommandButton1.Caption = «Далее >>»

End Sub

Смена надписи на кнопке в зависимости от индекса текущей страницы элемента управления MultiPage1:

Private Sub MultiPage1_Change()

    If MultiPage1.Value = 2 Then

        CommandButton1.Caption = «Сохранить»

    Else

        CommandButton1.Caption = «Далее >>»

    End If

End Sub

Обработка клика по кнопке CommandButton1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Private Sub CommandButton1_Click()

    If MultiPage1.Value < 2 Then

        ‘Переход на следующую страницу

        MultiPage1.Value = MultiPage1.Value + 1

    Else

        ‘Запись данных в таблицу на листе Excel

        Dim n As Byte

        n = Range(«A1»).CurrentRegion.Rows.Count + 1

        Cells(n, 1) = TextBox1 & » « & TextBox2 _

        & » « & TextBox3

        Cells(n, 2) = TextBox4

        Cells(n, 3) = TextBox5 & » « & TextBox6

        Cells(n, 4) = TextBox7

        Cells(n, 5) = TextBox8

        Cells(n, 6) = TextBox9

        Cells(n, 7) = TextBox10

    End If

End Sub

Заполнение данными страниц элемента управления MultiPage1:

Записанная строка в таблице Excel после нажатия кнопки «Сохранить»:

I use Excel 2016

I want to add a page to a Multi Page control.
For some reason I get the error «Run-time error ’13’: Type mismatch»

I have a blank Excel file with a UserForm. On the UserForm I have a CommandButton and a MultiPage, both are out of the box. I added the following code to the CommandButton

Private Sub CommandButton1_Click()
    Dim myPage As Page
    Set myPage = Me.MultiPage1.Pages.Add("testpage", "TestPage")
End Sub

Do I need to add references to some toolkit for this to work? For the moment I have the following references active

  • Visual Basic For Applications
  • Microsfot Excel 16.0 Object Library
  • OLE Automation
  • Microsoft Office 16.0 Object Library
  • Microsoft Forms 2.0 Object Library

When I write the Dim myPage declaration I get a list of objects.. I have two Page objects? Also when I write

myPage.

to get a list of available things for that object I see the following

  • CenterFooter
  • CenterHeader
  • LeftFooter
  • LeftHeader
  • RightFooter
  • RightHeader

So I assume myPage object is not from the right Page type

Содержание

  1. Класс MultiPage — набор страниц VBA
  2. Vba excel multipage выбрать вкладку
  3. VBA Excel. Элемент управления MultiPage
  4. Элемент управления MultiPage
  5. Примеры кода VBA Excel с MultiPage
  6. 4 комментария для “VBA Excel. Элемент управления MultiPage”

Класс MultiPage — набор страниц 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 оставьте пустым.

Теперь нам нужно прописать код для формы, жмем в окне проектов на наш объект UserForm (MPForm) и нажимаем кнопку View Code. В окне редактора кода прописываем следующие процедуры:

Private Sub MultiPage1_Change() Label1.Caption = MultiPage1.SelectedItem.CaptionEnd SubPrivate 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.CaptionEnd Sub

Давайте разберем код:

MultiPage1_Change – тут происходит обработка события Change, которое возникает при клике по флажкам. Каждый раз, когда мы будем переходить на ту или иную вкладку, в свойство Caption объекта Label будет записываться название выбранного флажка.

UserForm_Initialize – данная процедура будет выполняться при инициализации формы. Тут есть три цикла for, по одному на каждый объект ListBox, по сути, в цикле происходит простое заполнение списков. Далее идут настройки свойств:

  • Label1.FontSize – задаем размер шрифта для объекта Надпись
  • Label1.ForeColor – задаем цвет текста, которые отображается в поле Надпись
  • Label1.TextAlign – выравниваем шрифт по центру
  • Label1.Caption – тут мы прописываем начальное значение для свойства Caption.

В принципе все, не забывайте, что в редакторе кода для модуля (макроса), нужно прописать процедуру, которая будет выводить форму:

Sub MPModule() MPForm.ShowEnd Sub

Ну, вот и все, в статье мы кратко рассмотрели класс MultiPage VBA и написал небольшой пример.

Источник

Vba excel multipage выбрать вкладку

Элемент управления Multipage

августа 28, 2015 admin

Компонент Multipage это набор страниц, предоставляет возможность добавлять на поверхность формы несколько страниц, это эффективно в том случае, если элементов управления слишком много, и все они не умещаются на поверхности.

Multigape предоставляет набор из нескольких страниц, каждая из которых содержит собственный заголовок и собственный набор элементов управления. Для перехода между страницами достаточно кликнуть по заданному корешку.

рис . 1.1 Элемент управления MultiPage на панели ToolBox

рис. 1.2 Элемент управления MultiPage на форме

После того, как вы выбрали компонент 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()

Private Sub UserForm_Initialize()

ListBox1.AddItem “число_” & i

For i = 50 To 100

ListBox2.AddItem “число_” & i

For i = 100 To 150

ListBox3.AddItem “число_” & i

Next Label1.FontSize = 16

Давайте разберем код:

MultiPage1_Change – тут происходит обработка события Change, которое возникает при клике по флажкам. Каждый раз, когда мы будем переходить на ту или иную вкладку, в свойство Caption объекта Label будет записываться название выбранного флажка.

UserForm_Initialize – данная процедура будет выполняться при инициализации формы. Тут есть три цикла for, по одному на каждый объект ListBox, по сути, в цикле происходит простое заполнение списков. Далее идут настройки свойств:

  • Label1.FontSize – задаем размер шрифта для объекта Надпись
  • Label1.ForeColor – задаем цвет текста, которые отображается в поле Надпись
  • Label1.TextAlign – выравниваем шрифт по центру
  • Label1.Caption – тут мы прописываем начальное значение для свойства Caption.

В принципе все, не забывайте, что в редакторе кода для модуля (макроса), нужно прописать процедуру, которая будет выводить форму:

Ну, вот и все, в статье мы кратко рассмотрели класс MultiPage VBA и написал небольшой пример.

Источник

VBA Excel. Элемент управления MultiPage

Создание коллекции страниц с наборами элементов управления на пользовательской форме VBA Excel с помощью элемента управления MultiPage. Примеры кода.

Элемент управления MultiPage

Элемент управления MultiPage очень удобен, когда большой объем информации может быть разделен на несколько категорий, каждая из которых размещается на отдельной странице.

Основное свойство коллекции страниц – Value, которое возвращает индекс текущей (активной) страницы (индексация начинается с нуля).

Основное событие (метод) коллекции страниц – Change, которое происходит в момент перехода между страницами.

На каждой странице элемента управления MultiPage размещается свой набор элементов управления. Этим коллекция страниц отличается от элемента TabStrip, у которого на каждой вкладке отображается один и тот же набор элементов управления.

По умолчанию в редакторе VBA Excel на элементе управления MultiPage отображены 2 вкладки. Добавить, удалить, переименовать или переместить вкладку можно через контекстное меню, кликнув по ярлыку страницы правой кнопкой мыши.

  • New Page – добавление новой страницы;
  • Delete Page – удаление страницы;
  • Rename… – переименование страницы;
  • Move… – перемещение страницы.

Примеры кода VBA Excel с MultiPage

Пример 1
Добавление и удаление страниц элемента управления MultiPage с помощью кода VBA Excel.

Добавление 3-й, 4-й, 5-й и 6-й страниц к двум, которые уже есть по умолчанию:

Удаление второй страницы:

Удаление всех страниц:

Подгон размеров элемента управления MultiPage полностью под размеры пользовательской формы:

Пример 2
Добавление информации о новом сотруднике с помощью элемента управления MultiPage и запись в таблицу на рабочем листе Excel.

Для реализации примера понадобится следующая таблица:

и проект пользовательской формы в редакторе VBA Excel:

Наименования страниц элемента управления MultiPage и текст надписей (Label) заданы непосредственно на проекте пользовательской формы. Кнопку будем переименовывать в коде, так как она используется на 1-й и 2-й страницах для перехода на следующую страницу, а на 3-й странице – для записи данных в таблицу.

Загрузка пользовательской формы с необходимыми параметрами:

Смена надписи на кнопке в зависимости от индекса текущей страницы элемента управления MultiPage1:

Обработка клика по кнопке CommandButton1:

Заполнение данными страниц элемента управления MultiPage1:

Записанная строка в таблице Excel после нажатия кнопки «Сохранить»:

4 комментария для “VBA Excel. Элемент управления MultiPage”

Все легко и понятно. Спасибо!

Есть одно замечание. Использование скобок при вызове подпрограмм (sub) без ключевого слова call — это, вообще говоря, ошибка. Скобки в этом случае ставить не нужно.
Неправильно:

Обратите внимание, если вы опускаете ключевое слово call при вызове подпрограммы, VBE (редактор исходного кода) автоматически добавляет пробел после имени процедуры. Пробел — это разделитель, после которого должны быть перечислены через запятую параметры подпрограммы. Если вы ставите скобки, это воспринимается компилятором как выражение. Например, если вам нужно передать параметром ссылку на объект, скобки будут означать, что вместо ссылки будет передано значение свойства по умолчанию этого объекта.

Добрый день! Вы правы, что в строке

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

Эта строка не является вызовом подпрограммы, а является обычной строкой кода (оператором) внутри подпрограммы.

Скобки обязательны для всех операторов, возвращающих значения (объекты). Например, все функции возвращают результаты вычислений, и их аргументы должны быть обязательно заключены в скобки.

Методы могут как возвращать значения (объекты), так и не возвращать. Пример, когда метод MultiPage.Pages.Add возвращает объект:

Здесь скобки обязательны, без скобок редактор VBA подсветит строку как ошибочную.

Если метод MultiPage.Pages.Add использовать без присвоения возвращаемого значения переменной, подойдут оба варианта:

Некоторые операторы, не возвращающие значения (объекты), не допускают использование скобок, например, оператор Open.

Извините за поздний ответ. Не согласен. Методы — это подпрограммы (sub) и функции (function), относящиеся к классу. Синтаксис их вызова — такой же, как у обычных подпрограмм и функций. На всякий случай напомню, что sub не имеет возвращаемого значения, function — имеет, но его можно игнорировать (обычно), вызывая функцию, как процедуру. У процедур 2 способа вызова:
1. Классический
Call MySub(p1, p2)
при котором используются скобки.
2. Модный
MySub p1, p2
при котором скобки не используются.
Попробуйте определить процедуру
Sub MySub(p1, p2)
End sub
а затем вызвать её так:
MySub(p1, p2)
Компилятор сообщит вам об ошибке синтаксиса. Единственный вариант, позволяющий вам втиснуть скобки в модном способе вызова, это вызов процедуры с одним аргументом:
Sub MySub1(p1)
End sub

MySub1 (p1)
В этом случае компилятор будет считать скобки частью выражения, служащего аргументом. Если p1 — ссылка на объект, то скобки будут означать, что процедуре нужно передать не саму ссылку на объект, а значение его свойства по умолчанию, что не то же самое. Таким образом, скобки не являются опциональной частью модного синтаксиса вызова процедуры, как вы думаете, их просто не должно быть.
Документация Microsoft не сообщает прямо, что скобок при модном способе вызова не нужно (для случая нескольких аргументов сообщает, для одного — нет), но на практике это так.

Источник

 

Radomir-m

Пользователь

Сообщений: 73
Регистрация: 28.01.2019

Игорь Малахов

#4

21.06.2020 20:21:51

Эти вкладки у меня называются page1, page2 и т. д. Если пишу

Код
me.page1.activate

то программа не не находит page1
Это тоже не сработало:

Код
MultiPage1.Value = 0

Писал так, тоже не получается

Код
Page1.Value = 0

Прикрепленные файлы

  • 2020-06-21_22-22-16.png (36.4 КБ)

Изменено: Radomir-m21.06.2020 20:25:14

GrafPSV

0 / 0 / 0

Регистрация: 08.11.2018

Сообщений: 17

1

Excel

07.06.2021, 09:38. Показов 2917. Ответов 2

Метки page, userform (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день есть такая проблема:
при создании MultiPage на UserForm мы создаем отдельные Page
в свойствах каждой Page есть свойство visible. но вот как до него добраться не понимаю
строка

Visual Basic
1
UserForm1.MultiPage1.Page1. visible = false

не работает точно так же как и любые другие

Visual Basic
1
MultiPage1.Page1. visible = false
Visual Basic
1
UserForm1.Page1. visible = false

все время ошибка method or data member not found.
помогите пожалуйста как добраться до этого свойства?



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

07.06.2021, 11:24

2

Лучший ответ Сообщение было отмечено GrafPSV как решение

Решение

Visual Basic
1
MultiPage1.Pages(1).Visible = False

1 — вторая вкладка.



1



0 / 0 / 0

Регистрация: 08.11.2018

Сообщений: 17

07.06.2021, 12:12

 [ТС]

3

Vlad999 Спасибо все заработало.



0



Понравилась статья? Поделить с друзьями:
  • Multipage vba excel примеры
  • Multilevel lists in word
  • Multi word verbs что это такое
  • Multi word verbs с переводом
  • Multi word verbs примеры