VBa - пользовательская форма показывает один и тот же комбинированный список на двух страницах
Таким образом, у меня есть многостраничный, где я хочу, чтобы одна и та же кнопка отображалась на обеих страницах. Я мог бы поместить это снаружи, но граница от многостраничности настолько уродлива, что я попытался разместить все на страницах. К сожалению, вы не можете назвать предметы (например, выпадающий список) с тем же именем. Есть ли обходной путь, чтобы убрать границы и просто показать имена страниц или иметь одинаковое имя на элементе на двух страницах?
1 ответ
Повеселился с этой целью.
Рассмотрим эту пользовательскую форму в редакторе с TabStrip, 2 фрейма и некоторыми другими элементами управления.
Рамки названы из Frame0
, Frame1
, так далее.
Предполагая, что Frame0 является ссылкой на местоположение и сначала отображается при отображении пользовательской формы, вам будет необходим код ниже.
Код:
Option Explicit
Private Sub TabStrip1_Change()
Dim i As Long, lActiveTabIndex As Long
lActiveTabIndex = Me.TabStrip1.Value
For i = 0 To Me.TabStrip1.Tabs.Count - 1
Me.Controls("Frame" & i).Visible = (i = lActiveTabIndex)
Next i
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
With Me
.Height = 288 ' Adjust to your desired height
' Align all FrameX top/left to same as Frame0, delete Caption and SpecialEffect
For i = 0 To Me.TabStrip1.Tabs.Count - 1
With Me.Controls("Frame" & i)
.Top = Me.Frame0.Top
.Left = Me.Frame0.Left
.Caption = ""
.SpecialEffect = fmSpecialEffectFlat
End With
Next i
End With
' Ensure frame for first tab is displayed
TabStrip1_Change
End Sub
Пользовательская форма первой загрузки (не сохранил скриншот, ни рабочую книгу, извините).