Элементы управления Excel UserForm — Frame, MultiPage и TabStrip; группа OptionButtons; создать мастер с помощью элемента управления MultiPage

Элементы управления UserForm — Frame, MultiPage и TabStrip

UserForm действует как контейнер, в который вы добавляете несколько элементов управления ActiveX , каждый из которых имеет определенное использование и связанные свойства. Сама по себе UserForm не будет иметь большого смысла, если к ней не будут добавлены элементы управления ActiveX, которые являются фактическими интерактивными объектами пользователя. Использование элементов управления ActiveX на листе подробно описано в отдельном разделе «Excel VBA: элементы управления ActiveX, элементы управления формами и автофигуры на листе» . .

Также см. « 2. UserForm и элементы управления — Properties «для свойств, общих для UserForm и большинства элементов управления

Примечание. В приведенных ниже примерах коды vba необходимо вводить в модуль кода пользовательской формы, если не указано иное.

———————————— —-

Содержание:

Управление кадром

Элемент управления несколькими страницами

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

——- ———————————

Элемент управления фреймом

Фреймы используются для группирования элементов управления, которые работают вместе, связаны друг с другом или имеют некоторую общность, в пользовательской форме. Они также улучшают макет UserForm, объединяя и организовывая связанный набор элементов. Например, в форме биоданных физические атрибуты, такие как рост, цвет лица, вес и цвет волос, могут быть сгруппированы в конкретном кадре. Фреймы особенно полезны для группировки двух или более OptionButton. В первую очередь, фреймы используются для двух целей: (i) для группировки связанных элементов управления в пользовательской форме для визуального улучшения и организации макета формы; и (ii) сгруппировать OptionButton, чтобы установить их поведение — они становятся взаимоисключающими внутри фрейма, и выбор одного OptionButton приведет к отмене выбора всех других OptionButton только в этом фрейме. Использование фрейма: сначала добавьте фрейм в пользовательскую форму, а затем добавьте элементы управления в фрейм.

Пример 1: определение имени и заголовка всех включенных OptionButton в кадре

Private Sub CommandButton1_Click ()
‘определяет имя и заголовок всех включенных OptionButton в кадре

Dim ctrl As Control

Для каждого ctrl в Frame1.Controls

Если TypeOf ctrl — это MSForms.OptionButton, то

Если ctrl.Enabled = True, то

MsgBox ctrl.Name & «- активированный OptionButton с заголовком» & ctrl. Подпись

End If

End If

Next

End Sub

Пример 2: Использование элементов управления во фрейме с кодом vba (см. изображение 25):

Private Sub UserForm_Initialize ()
‘Установить свойства элементов управления при инициализации UserForm.

Dim i As Integer
Dim myArray As Вариант

‘введите значение в текстовое поле «Имя» пользовательской формы:
Me.txtName.Value = «Введите свое имя»

‘установите заголовок для 2 кадров:
Me.fraPhyAttr.Caption = «Physical Attributes»
Me.fraEduExp.Caption = «Education & Experience»

‘заполнить ListBox «Age» в UserForm:
With Me.lstAge

For i = 1 To 100

.AddItem i & «yrs»

Next i

End With

‘заполнить ListBox из «Высота» в рамке «Физические атрибуты»:

С Me.fraPhyAttr.ListBox1

Для i = 140–200

.AddItem i & «cms»

Далее i

End With

‘заполните ListBox «Weight» в кадре «Physical Attributes»:
с помощью Me.fraPhyAttr. ListBox2

Для i = от 80 до 250

.AddItem i & «lbs»

Next i

Закончить

‘заполнить ListBox «Область работы» во фрейме «Образование и опыт»:
myArray = Array («Финансы», «Банковское дело «,» Медицина «,» Инженерия «,» Маркетинг «,» Менеджмент «,» Авиакомпании «,» Другое «)
Me.fraEduExp.lstWorkField.List = myArray

‘заполнить ListBox «Опыт в годах» в кадре «Образование и опыт»:
With Me.fraEduExp.lstExpYrs

Для i = от 1 до 50

.AddItem i & «yrs»

Next i

Завершить

‘Групповые кнопки OptionButtons:
With Me.fraPhyAttr

optDark.GroupName = «Complexion»
optWheatish.GroupName = «Complexion»

optFair.GroupName = «Цвет лица»

optBlack.GroupName = «Волосы»
optBlonde.GroupName = «Hair»
optBrunette.GroupName = «Hair»
optOther.GroupName = «Hair»

Закончить на

Me.fraEduExp.optGraduate.GroupName = «EduLevel»
Me.fraEduExp.optPostGrad.GroupName = «EduLevel»
Me.fraEduExp.optProfessional.GroupName = » EduLevel «

‘введите значение в текстовое поле» Университет/учреждение «фрейма» Образование и опыт «:
Me.fraEduExp.txtUniversityInstitution. Value = «Введите имя»

End Sub

Private Sub txtName_Enter ()

‘при выборе, очищает Текстовое поле «Имя» пользовательской формы
Me.txtName.Value = «»

End Sub

Частная подписка txtUniversityInstitution_Enter ()

‘при выборе очищает текстовое поле «Университет/учреждение» фрейма «Образование и опыт»
Me.fraEduExp.txtUniversityInstitution.Value = «»

End Sub

—— ————————————————— ————————————————— —-

MultiPage Control

Элемент управления MultiPage состоит из одного или нескольких объектов Page, каждый из которых содержит свой собственный набор элементов управления. MultiPage лучше всего использовать, когда вы хотите обрабатывать большой объем данных, которые можно разделить на несколько категорий, при этом для каждой категории можно создать отдельную страницу. Все элементы управления, которые добавляются на страницу в элементе управления MultiPage, содержатся в этой странице и становятся ее частью, что отличает элементы управления от тех, которые в противном случае являются частью UserForm. Элемент управления MultiPage имеет несколько страниц, при этом выбор страницы делает ее текущей (делая ее видимой), а остальные скрывает. Каждая страница элемента управления MultiPage имеет свой собственный порядок табуляции. Страницы пронумерованы от 0, и для выбора первой страницы в элементе управления MultiPage используйте код: MultiPage1.Value = 0 . По умолчанию элемент управления MultiPage имеет 2 страницы. Чтобы добавить страницы , щелкните вкладку правой кнопкой мыши и выберите «Новая страница» (((выберите «Удалить страницу», чтобы удалить страницу). Примечание. Каждая страница многостраничного control будет отдельно группировать два или более OptionButton, независимо от того, имеют ли все OptionButton (на всех страницах) одно и то же имя группы.

Динамическое добавление/удаление страницы:

Использование метода добавления : Синтаксис: установите m = MultiPage1.Pages.Add (pageName, pageCaption, pageIndex) . pageIndex (необязательно) — целое число, которое указывает позицию для вставляемой страницы, начиная с 0 для первой position/Page. pageName задает имя для страницы, pageCaption задает заголовок. Оба параметра указывать необязательно.

Установить m = MultiPage1.Pages.Add ( «Page5», «NewPage», 1) — этот код добавляет новую страницу с именем Page5 и заголовком NewPage в качестве второй страницы (то есть второй позиции в порядке страниц).

MultiPage1.Pag es.Add «Page3»; MultiPage1.Pages (2) .Caption = «NewPage» — эти 2 кода добавляют новую (третью) страницу с именем Page3 и устанавливают для ее заголовка значение NewPage.

MultiPage1.Pages.Add — этот код просто добавляет новую страницу.

Удаление страницы Синтаксис: MultiPage1. Pages.Remove (pageIndex) . Пример: MultiPage1.Pages.Remove (1) — этот код удаляет вторую страницу.

Динамический доступ к отдельной странице:

Чтобы изменить или установить свойства страницы во время выполнения , нам нужно идентифицировать эту страницу в элементе управления MultiPage, что можно сделать разными способами. Для доступа к отдельной странице в элементе управления MultiPage можно использовать следующие методы (см. Изображения 26a и 26b и ниже Примеры кодов vba):

1. Числовой индекс (с использованием коллекции страниц): индекс 0 относится к первой странице, индекс 1 — ко второй странице и так далее. Код для установки заголовка — MultiPage1.Pages (Index) .Caption

2. Метод элемента (с использованием коллекции Pages): индекс элемента 0 относится к первой странице, индекс элемента 1 — ко второй странице и т. д. Код для установки заголовка — MultiPage1.Pages.Item (ItemIndex) .Caption

3. Имя страницы : код для установки заголовка — MultiPage1.Pages («PageName»). Caption или MultiPage1.Pages.Item («PageName»). Caption

4. Объект страницы : код для установки заголовка — MultiPage1.PageName.Caption

5. Свойство SelectedItem : код для установки заголовка — MultiPage1.SelectedItem.Caption

Пример 3. Измените свойства каждой страницы элемента управления MultiPage, используя разные методы выбора страницы. См. Изображение 26a перед запуском кода (т. Е. MultiPage соответствует времени разработки) и см. Изображение 26b, на котором показаны измененные заголовки (время выполнения) после выполнения приведенного ниже кода vba.

Private Sub UserForm_Activate ()
‘изменяет/устанавливает свойства каждой страницы элемента управления MultiPage, используя различные методы выбора страницы.

‘с использованием числового индекса: устанавливает заголовок для первой страницы:
MultiPage1.Pages (0) .Caption = «Australia»

‘с использованием метода элемента: устанавливает заголовок для второй страницы:
MultiPage1.Pages.Item (1) .Caption = «Canada»

‘с использованием имени страницы: задает заголовок для третьей страницы с именем Page3:
MultiPage1.Pages («Page3»). Caption = «France»
‘ альтернативный код: MultiPage1.Pages.Item («Page3»). Caption = «France»

‘usin g Объект страницы: устанавливает заголовок для четвертой страницы с именем Page4:
MultiPage1.Page4.Caption = «Germany»

‘с использованием свойства SelectedItem: устанавливает Заголовок пятой страницы, которая является выбранной/активной страницей:

‘выбирает пятую страницу
MultiPage1. Value = 4
‘устанавливает заголовок для выбранной страницы
MultiPage1.SelectedItem.Caption = «USA»

End Sub

Создайте мастер, используя элемент управления Single UserForm и MultiPage

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

Пример 4. Обратитесь к изображениям с 27a по 27d, которые показывают 4 страницы в мастере работы с несколькими страницами. Ниже приведен набор кодов vba для них (для ввода в модуль кода пользовательской формы):

Private Sub UserForm_Initialize ()
‘устанавливает свойства каждой страницы элемента управления MultiPage

Dim i As Integer

‘установить заголовок для каждой страницы:
MultiPage1.Pages (0) .Caption = «Name»
MultiPage1.Pages (1) .Caption = «Gender & Age»
MultiPage1.Pages (2) .Caption = «Personal»
MultiPage1.Pages (3) .Caption = «Professional»

‘установить заголовок для Фреймы на четвертой странице:
MultiPage1.Pages (3) .Frame1.Caption = «Область работы»
MultiPage1.Pages (3) .Frame2.Caption = «Уровень образования»

‘заполнить ListBox «Возраст» на второй странице:
с помощью MultiPage1.Pages (1) .lstAge

Для i = от 1 до 100

.AddItem i & «лет»

Next i

Закончить на

‘заполните ComboBox «Страна проживания» на третьей странице:
myArray = Array («Аргентина», «Австралия», «Бразилия», «Китай», «Франция», «Германия», «Greec. e »,« Гонконг »,« Индия »,« Италия »,« Япония »,« Россия »,« Сингапур »,« Испания »,« Швейцария »,« Великобритания »,« США »)
MultiPage1. Pages (2) .cmbCountry.List = myArray

MultiPage1.Pages (0) .Enabled = True
MultiPage1.Pages (1) .Enabled = False
MultiPage1.Pages (2) .Enabled = False
MultiPage1.Pages (3) .Enabled = False
‘выберите первую страницу:
MultiPage1. Значение = 0

End Sub

Private Sub MultiPage1_Change ()

‘задает свойства Предыдущий, Следующий, Кнопки отмены и сохранения. Примечание: эти кнопки создаются вне элемента управления MultiPage.
Выберите Case MultiPage1.Value

‘Первая страница:

Case 0

cmdPrevious.Enabled = False

cmdNext.Enabled = True

cmdSave.Enabled = False

‘Последняя страница:

Случай MultiPage1.Pages.Count — 1

cmdPrevious.Enabled = True

cmdNext.Enabled = False

cmdSave.Enabled = True

‘Другие страницы:

Case Else

cmdPrevious.Enabled = True

cmdNext.Enabled = True

cmdSave.Enabled = False

End Select

End Sub

Private Sub cmdSave_Click ()
‘задает свойства для CommandButton Save. Примечание: этот код не указывает, как и где будут сохраняться данные MultiPage, а только условия, при которых данные будут сохранены.

‘Последняя страница — должна быть как минимум одна кнопка OptionButton выбирается в каждом кадре:
With MultiPage1.Pages (MultiPage1.Pages.Count — 1)

Если optAdmin.Value = False и optMktg.Value = False и optOps.Value = False И optOther1.Value = False Затем

MsgBox «Пожалуйста, выберите поле работы»

Exit Sub

ElseIf optGrad.Value = False И optPostGrad.Value = False и optProff.Value = False And optOther2.Value = False Then

MsgBox «Пожалуйста, выберите уровень образования»

Exit Sub

End If

End With

End Sub

Private Sub cmdPrevious_Click ()
‘установить свойства для CommandButton Previous

Выбрать регистр MultiPage1.Value

Случай 1

MultiPage1.Pages (1). Enabled = False

MultiPage1.Pages (0) .Enabled = True

MultiPage1.Value = 0

Случай 2

MultiPage1.Pages (2) .Enabled = False

MultiPage1.Pages (1) .Enabled = True

MultiPage1.Value = 1

Случай 3

MultiPage1.Pages (3) .Enabled = False

MultiPage1.Pages (2) .Enabled = True

MultiPage1.Value = 2

End Select

End Sub

Private Sub cmdNext_Click ()
‘устанавливает свойства для CommandButton Next

Выбрать регистр MultiPage1.Value

‘Для перехода к следующей странице необходимо ввести имя:
Случай 0

Если txtName.Value = «» Тогда

MsgBox «Пожалуйста, введите имя»

Exit Sub

Else

MultiPage1.Pages (0) .Enabled = False
MultiPage1.Pages (1) .Enabled = True
MultiPage1.Value = 1

End If

‘Для перехода на следующую страницу необходимо выбрать пол и возраст:
Случай 1

Если optMale.Value = False И optFemale. Value = False Then

MsgBox «Пожалуйста, выберите пол»

Exit Sub

ElseIf lstAge.ListIndex = -1 Then

MsgBox «Выберите возраст»

Else

MultiPage1.Pages (1) .Enabled = False
MultiPage1.Pages ( 2) .Enabled = True
MultiPage1.Value = 2

End If

‘Семейное положение и страна проживания необходимы для выберите, чтобы перейти к следующей странице:
Случай 2

Если optMarried.Value = False И optSingle.Value = False Тогда

MsgBox «Пожалуйста, выберите Семейное положение «

Exit Sub

ElseIf cmbCountry.Value =» «Затем

MsgBox» Пожалуйста, выберите или введите страну «

Else

MultiPage1.Pages (2) .Enabled = False
MultiPage1.Pages (3) .Enabled = True
MultiPage1.Value = 3

End If

End Select

End Sub

Частная подпрограмма cmdClose_Click ()
‘установить свойства для CommandButton Close

Unload Me

Конец подпрограммы

————— ————————————————— ———————————————

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

Элемент управления TabStrip используется для просмотра различного содержимого на каждой вкладке для одного и того же набора элементов управления. TabStrip — это набор вкладок, каждая из которых содержит набор элементов управления. По умолчанию элемент управления TabStrip имеет 2 вкладки. Чтобы добавить вкладки , щелкните вкладку правой кнопкой мыши и выберите «Новая страница» (выберите «Удалить страницу», чтобы удалить вкладку).

Динамическое добавление/удаление табуляции:

Использование Добавить метод: Синтаксис: Установить t = TabStrip1.Tabs.Add (tabName, tabCaption, tabIndex) . tabIndex (необязательно) — это целое число, которое указывает позицию для вставки вкладки, начиная с 0 для первой позиции/вкладки. tabName устанавливает имя для вкладки, tabCaption задает заголовок. Оба параметра указывать необязательно.

Set t = TabStrip1.Tabs.Add («Tab4», «NewTab», 1) — этот код добавляет новую вкладку с именем Tab4 и Caption NewTab в качестве второй вкладки (то есть второй позиции в порядке табуляции).

TabStrip1.Tabs.Add «Tab3»; TabStrip1.Tabs (2) .Caption = «Div 3» — два кода добавляют новую (третью) вкладку с именем Tab3 и устанавливают ее заголовок на Div 3.

Чтобы удалить вкладку Синтаксис: TabStrip1.Tabs.Remove (tabCaption) . Пример: TabStrip1.Tabs.Remove («Div 3») — этот код удаляет вкладку с заголовком Div 3.

Разница между элементом управления MultiPage и элементом управления TabStrip:

Элемент управления MultiPage — это контейнер для элементов управления, аналогичный Frame. Каждая страница имеет отдельный набор элементов управления, и выбор страницы (то есть ее отображение) скрывает другие страницы многостраничного.

TabStrip содержит согласованный набор элементов управления для всех вкладок (внутри TabStrip). Содержимое элементов управления изменяется при выборе другой вкладки, но видимость или расположение элементов управления остаются прежними.

Выбор вкладки:

Чтобы изменить или установить свойства вкладки в Во время выполнения нам нужно идентифицировать эту вкладку в элементе управления TabStrip, что можно сделать по-разному. Свойство SelectedItem элемента управления TabStrip указывает, какая вкладка выбрана. Чтобы выбрать вкладку, установите свойство Value элемента управления TabStrip. Значения табуляции начинаются с 0, и значение первой табуляции в элементе управления TabStrip будет 0, значение второй табуляции будет 1 и так далее. Для доступа к отдельной вкладке в элементе управления TabStrip можно использовать следующие методы (см. Ниже Пример кодов vba):

1. Числовой индекс (с использованием коллекции вкладок): индекс 0 относится к первой странице, индекс 1 — ко второй странице и так далее. Код для установки заголовка — TabStrip1.Tabs (Index) .Caption

2. Метод элемента (с использованием коллекции вкладок): индекс элемента 0 относится к первой странице, индекс элемента 1 — ко второй странице и так далее. Код для установки заголовка — TabStrip1.Tabs.Item (ItemIndex) .Caption

3. Имя вкладки : код для установки заголовка — TabStrip1.Tabs («TabName»). Caption или TabStrip1.Tabs.Item («TabName»). Caption

4. Tab Object : код для установки заголовка — TabStrip1.TabName.Caption

5. Свойство SelectedItem : код для установки заголовка — TabStrip1.SelectedItem.Caption

Пример 5: изменение/установка свойств каждой вкладки элемента управления TabStrip с помощью различных методов выделения вкладки.

Private Sub UserForm_Initialize ()
‘изменяет/устанавливает свойства каждой вкладки элемента управления TabStrip, используя разные методы выбора вкладки.

‘с использованием числового индекса: устанавливает заголовок для первой вкладки:
TabStrip1.Tabs (0) .Caption = «Australia»

‘с использованием метода элемента: устанавливает заголовок для второй вкладки:
TabStrip1.Tabs.Item (1) .Caption = «Canada»

‘с использованием имени вкладки: устанавливает заголовок для третьей вкладки с именем Tab3:
TabStrip1.Tabs («Tab3»). Caption = «France»
‘ альтернативный код: TabStrip1.Tabs.Item («Tab3»). Caption = «France»

‘с использованием объекта Tab: задает заголовок для четвертой вкладки, имя которой Tab4:
TabStrip1.Tab4 .Caption = «Германия»

‘с использованием свойства SelectedItem: устанавливает заголовок для пятой вкладки, которая является выбранной/активной вкладкой:

‘ выбирает пятую вкладку
TabStrip1. Value = 4
‘устанавливает заголовок для выбранной вкладки
TabStrip1.SelectedItem. Caption = «США»

End Sub

Private Sub CommandButton1_Click ()
‘проверьте имя и заголовок всех вкладок в элементе управления TabStrip.

Dim i As Integer

For i = 0 To TabStrip1.Tabs.Count — 1

MsgBox TabStrip1. Tabs (i) .Name & «имеет заголовок» & TabStrip1.Tabs (i) .Caption

Next i

End Sub

Пример 6. Как работать с элементом управления TabStrip и вкладками — использование TabStrip и его вкладок для загрузки данных с листа и обновления диапазона листа из данных вкладок. Обратитесь к изображениям с 28a по 28c и ниже с кодами vba:

Private Sub UserForm_Initialize ()
‘Устанавливает свойства элементов управления при инициализации UserForm.

‘ устанавливает заголовки для каждой вкладки:
С TabStrip1

.Tabs (0) .Caption = «Div 1»
.Tabs (1) .Caption = «Div 2»

‘добавляем новую вкладку с именем «Tab3» и устанавливаем ее заголовок:
.Tabs.Add «Tab3»
.Tabs (2) .Caption = «Div 3»

Конец на

‘заполните текстовые поля «Цель продаж», «Фактические продажи» и «Достигнуто (%)» для Дивизиона 1 из листа:
txtSalesTarget.Value = Sheet5.Range («B2»). Value
txtActualSales.Value = Sheet5.Range («B3»). Value
txtAcharded.Value = Round (Sheet5.Range (» B4 «). Va lue * 100, 2) & «%»

‘установить первую вкладку как выбранную:
TabStrip1.Value = 0

‘задает свойства метки (т.е. Caption, BackColor, Font & TextAlign), который появляется при выборе первой вкладки:
lblDivision.Caption = «Div 1: Sales Performance»
Me.lblDivision.BackColor = RGB (255, 0, 0)
Me.lblDivision.Font.Bold = True
Me.lblDivision.TextAlign = fmTextAlignCenter

‘пользователю не разрешено вводить в текстовое поле of «Acheived (%)»
txtAcharded.Enabled = False

End Sub

Private Sub TabStrip1_Change ()
‘, когда Выбрана новая вкладка, установлены свойства метки и текстовые поля заполняются из рабочего листа:

Dim n As Integer

n = TabStrip1.SelectedItem.Index

Select Case n

Case 0

‘при выборе первой вкладки, заголовок ярлыка установлен, и его BackColor изменится на красный:

lblDivision.Caption = «Div 1: Sales Performance»

Me.lblDivision. BackColor = RGB (255, 0, 0)

‘Текстовые поля «Цель продаж» и «Фактические продажи» для подразделения 1 заполняются из рабочего листа:

txtSalesTarget = Sheet5.Range («B2»). Value

txtActualSales = Sheet5.Range («B3»). Value

txtAcharded = Round (Sheet5.Range («B4»). Value * 100, 2) & «%»

Случай 1

‘при выборе второй вкладки устанавливается заголовок ярлыка, а его цвет BackColor меняется на зеленый:

lblDivision.Caption = «Div 2: Sales Performance»

Me. lblDivision.BackColor = RGB (0, 255, 0)

‘Текстовые поля «Цель продаж» и «Фактические продажи» для отдела 2 заполняются из рабочего листа:

txtSalesTarget = Sheet5.Range («C2»). Value

txtActualSales = Sheet5.Range («C3»). Value

txtAcharded = Round (Sheet5.Range («C4»). Value * 100, 2) & «%»

Случай 2

‘при выборе третьей вкладки устанавливается заголовок ярлыка, а его задний цвет меняется на желтый:

lblDivision.Caption = «Div 3: Sales Performance»

Me.lb lDivision.BackColor = RGB (255, 255, 0)

‘Текстовые поля «Цель продаж» и «Фактические продажи» для подразделения 3 заполняются из рабочего листа:

txtSalesTarget = Sheet5.Range («D2»). Value

txtActualSales = Sheet5.Range («D3»). Value

txtAchved = Round (Sheet5.Range («D4»). Value * 100, 2) & «%»

End Select

End Sub

Private Sub cmdClose_Click ()
‘при нажатии кнопки «Закрыть» выгружает UserForm

Разгрузить меня

Конец подпрограммы

Private Sub cmdClick_Click ()
‘Нажатие кнопки «Сохранить» обновит рабочий лист значениями каждой вкладки.
‘ Обратите внимание, что рабочий лист Range (» B4: D4 «) имеет формат процента с двумя десятичными знаками. Диапазон («B4») имеет формулу: = B3/B2; Диапазон («C4») имеет формулу: = C3/C2; и Range («D4») имеет формулу: = D3/D2.

Dim n As Integer

n = TabStrip1 .SelectedItem.Index

Select Case n

‘обновить диапазон рабочего листа для обновленных значений в текстовых полях, для раздела 1:

Случай 0

Если IsNumeric (txtSalesTarget.Value) и txtSalesTarget.Value> 0 и IsNumeric (txtActualSales.Value), то

Sheet5.Range (» B2 «). Value = txtSalesTarget.Value

Sheet5.Range (» B3 «). Value = txtActualSales.Value

txtAcharded.Value = Round ((txtActualSales. Value/txtSalesTarget.Value) * 100, 2) & «%»

Else

txtAcharded.Value = «»

End Если

‘обновить диапазон листа для обновленных значений в текстовых полях, для Раздела 2:
Случай 1

Если IsNumeric (txtSalesTarget.Value) и txtSalesTarget. Значение> 0 и IsNumeric (txtActualSales.Value) Затем

Sheet5.Range («C2»). Value = txtSalesTarget.Value

Sheet5.Range («C3» ) .Value = txtActualSales.Value

txtAchved.Value = Round ((txtActualSales.Value/txtSalesTarget.Value) * 100, 2) & «%»

Иначе

txtAcharded.Value = «»

End If

‘обновить диапазон рабочего листа для обновленных значений в текстовых полях для раздела 3:
Случай 2

Если IsNumeric (txtSalesTarget.Value) и txtSalesTarget.Value> 0 и IsNumeric (txtActualSales.Value), то

Sheet5.Range ( «D2»). Value = txtSalesTarget.Value

Sheet5.Range («D3»). Value = txtActualSales.Value

txtAcharded.Value = Round ((txtActualSales .Value/txtSalesTarget.Value) * 100, 2) & «%»

Else

txtAcharded.Value = «»

End If

End Select

End Sub



Изменение цвета вкладок Multipage в VBA

Я использую формы в VBA и мне было интересно g, если можно сделать так, чтобы вкладки на моих многостраничных страницах меняли цвет, когда они активны, чтобы был лучший контраст с другими вкладками. Вот скриншот

Есть ли способ контрастировать активная вкладка из неактивных вкладок, чтобы пользователь мог знать, какую вкладку он использует?

Или у вас есть идеи, чтобы активная вкладка могла лучше отображаться на неактивных вкладках?


1

Подход, отмечая страницу подписи с помощью галочки

«Или у вас есть идеи, чтобы активная вкладка могла лучше отображаться на фоне неактивных вкладок?»

Возможный и полезный подход —

  • отмечать каждый щелчок заголовок страницы с помощью галочки (например, ChrW (& H2611) ) и
  • автоматически убрать отметку заголовок предыдущей страницы: код «запоминает» текущий/старый индекс страницы через многостраничный тег . de> устанавливается в любом многостраничном событии ..._ Change () ( .Tag инициализируется с помощью UserForm_Initialize () в первую очередь).

Поскольку подписи могут включать обычные пробелы, я решил добавить защищенный пробел ( ChrW (& HA0) ) к символу галочки, чтобы разрешить простой Replace () сохранить пробелы в исходной подписи страницы.

Пример кода в пользовательской форме

  Private Sub MultiPage1_Change () 'Цель: пометить текущую подпись страницы галочкой With Me.MultiPage1 Dim pg As MSForms.Page' a) снять отметку со старой подписи Установить pg = oldPage (Me.  MultiPage1) pg.Caption = Заменить (стр.. Caption, ChkMark, vbNullString) 'b) пометить новую подпись и запомнить последнее многостраничное значение Set pg = .Pages (.Value) pg.Caption = ChkMark & ​​pg.Caption .Tag = .Value'  

Функции справки и UserForm_Initialize () процедура

  Function oldPage (mp As MSForms.MultiPage) As MSForms.Page'Purpose: вернуть текущую отмеченную страницу в данной многостранице С помощью mp Установить oldPage = .Pages (Val (.Tag)) End WithEnd FunctionFunction ChkMark () As String'Purpose:  вернуть ящик для голосования с проверкой + пробел ChkMark = ChrW (& H2611) & ChrW (& HA0) 'ящик для голосования с проверкой + blankEnd FunctionPrivate Sub UserForm_Initialize ()' Цель: отметить стартовую страницу и запомнить индекс страницыConst startIndx As Long = 0With Me.MultiPage1.  Pages (startIndx) .Caption = ChkMark & ​​.Pages (startIndx) .Caption .Tag = startIndxEnd WithEnd Sub  

Улучшите этот ответ
ответил 7 ноября ’20 в 11:52
добавить комментарий |

Подход, помеча заголовки страниц галочкой

«Или у вас есть идея, чтобы активная вкладка лучше отображалась на фоне неактивных?»

Возможный & Полезным подходом было бы

  • пометить каждую подпись страницы, на которую кликнули, галочкой (например, ChrW (& H2611) ) и для
  • автоматического удаления заголовка предыдущей страницы: код «запоминает» индекс текущей/старой страницы через свойство многостраничного .Tag , установленное в любом многостраничном событии ..._ Change () ( .Tag инициализируется с помощью UserForm_Initialize () сначала).

Поскольку подписи могут включать обычные пробелы, я решил добавить защищенный пробел ( ChrW (& HA0) ) для символа галочки, чтобы позволить простой Replace () сохранить пробелы в исходной подписи страницы.

Экзамен код в форме пользователя

  Private Sub MultiPage1_Change () 'Цель: пометить заголовок текущей страницы галочкой With Me.MultiPage1 Dim pg As MSForms.Page' a)  снять отметку со старой подписи Установить pg = oldPage (Me.MultiPage1) pg.Caption = Replace (pg.Caption, ChkMark, vbNullString) 'b) отметить новую подпись и запомнить последнее многостраничное значение Установить pg = .Pages (.Value) pg.  Caption = ChkMark & ​​pg.Caption .Tag =. Значение ' 

Функции справки и подпрограмма UserForm_Initialize ()

  Функция oldPage (mp As MSForms.MultiPage) As MSForms.Page'Purpose: вернуть текущую отмеченную страницу в данной многостранице With mp Установить oldPage = .Pages (Val (.Tag))  Функция End WithEnd Функция ChkMark () As String'Цель: вернуть ящик для голосования с галочкой + пробел ChkMark = ChrW (& H2611) & ChrW (& HA0) 'ящик для голосования с галочкой + пусто Функция EndPrivate Sub UserForm_Initialize ()'  page indexConst startIndx As Long = 0With Me.MultiPage1 .Pages (startIndx) .Caption = ChkMark & ​​.Pages (startIndx) .Caption .Tag = startIndxEnd WithEnd Sub  

Оцените статью
logicle.ru
Добавить комментарий