Создание взаимосвязанных наборов данных на пользовательской форме VBA Excel с помощью элемента управления TabStrip (коллекция вкладок). Примеры кода.
Элемент управления TabStrip
Основное свойство коллекции вкладок – SelectedItem, которое возвращает текущую (активную) вкладку.
Основное событие (метод) коллекции вкладок – Change, которое происходит в момент перехода между вкладками.
Набор элементов управления, размещенный на элементе TabStrip, отображается на всех вкладках. Этим коллекция вкладок отличается от элемента MultiPage, у которого на каждой странице размещается свой набор элементов управления.
Несмотря на то, что на всех вкладках элемента TabStrip отображается один набор элементов управления, данными в этом наборе можно управлять с помощью метода Change, используя свойства SelectedItem и Value (числовой индекс вкладки, счет начинается с нуля).
По умолчанию в редакторе VBA Excel на элементе управления TabStrip отображены 2 вкладки. Добавить, удалить, переименовать или переместить вкладку можно через контекстное меню, кликнув по вкладке правой кнопкой мыши.
- New Page – добавление новой вкладки;
- Delete Page – удаление вкладки;
- Rename… – переименование вкладки;
- Move… – перемещение вкладки.
Примеры кода VBA Excel с TabStrip
Пример 1
Добавление и удаление вкладок элемента управления TabStrip с помощью кода VBA Excel.
Добавление 3-й, 4-й, 5-й и 6-й вкладок к двум, которые уже есть по умолчанию:
1 2 3 4 |
Dim i As Byte For i = 3 To 6 TabStrip1.Tabs.Add ("Tab" & i) Next |
Удаление третьей вкладки:
1 2 |
TabStrip1.Tabs.Remove ("Tab3") TabStrip1.Tabs.Remove (2) |
Удаление всех вкладок:
1 |
TabStrip1.Tabs.Clear |
Пример 2
Взаимодействие между элементом управления TabStrip и таблицей на рабочем листе Excel.
Для реализации примера понадобится следующая таблица:
и проект пользовательской формы в редакторе VBA Excel:
Загрузка пользовательской формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Private Sub UserForm_Initialize() Dim r As Byte, i As Byte 'r - количество строк в таблице Me.Caption = "Продукты" With TabStrip1 'Удаляем вкладки по умолчанию .Tabs.Clear 'Подгоняем TabStrip1 по размерам формы .Left = Me.Left .Top = Me.Top .Width = Me.Width .Height = Me.Height End With 'Даем названия кнопкам CommandButton1.Caption = "Создать" CommandButton2.Caption = "Записать" 'Создаем вкладки и заполняем текстовые 'поля данными первой строки таблицы With Range("A1").CurrentRegion r = .Rows.Count For i = 1 To r TabStrip1.Tabs.Add (.Cells(i, 1)) Next For i = 2 To 6 Controls.Item("TextBox" & i - 1) _ = .Cells(1, i) Next End With End Sub |
Добавление новой вкладки в коллекцию:
1 2 3 4 5 6 7 8 9 10 |
Private Sub CommandButton1_Click() Dim t As String 'Назначаем имя новой вкладке t = InputBox("Добавьте имя новой вкладки:") With TabStrip1 .Tabs.Add (t) 'Переходим на новую вкладку .Value = Range("A1").CurrentRegion.Rows.Count End With End Sub |
Добавлена вкладка «Грибы» и заполнены текстовые поля:
Запись изменений, внесенных на новой или существующей вкладке, в таблицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub CommandButton2_Click() Dim n As Byte, i As Byte With Range("A1").CurrentRegion 'Определяем номер активной вкладки n = TabStrip1.Value 'Записываем имя текущей вкладки 'в первый столбец таблицы .Cells(n + 1, 1) = TabStrip1.SelectedItem.Caption 'Заполняем 2-6 столбцы таблицы 'данными из текстовых полей For i = 2 To 6 .Cells(n + 1, i) = Controls.Item("TextBox" & i - 1) Next End With End Sub |
В таблицу записана новая строка: