我正在尝试制作包含大量页面的表单。到目前为止它工作正常,我从代码中添加了控件。有数百个,它使应用程序“沉重”。 现在我在初始化中添加了组合框中的所有内容,但我想要做的是在更改页面时加载控件。 因此,当我启动表单时,应该为第1页加载控件。我想要做的是当我点击Multipage的第2页来加载它的组件(而不是在UserForm的初始化时添加所有这些组件)。 谢谢!
答案 0 :(得分:2)
如果您只想在点击每个页面时对其进行初始化,您可以使用类似的内容跟踪已点击的内容;
Private mbInitialised() As Boolean
Private Sub UserForm_Initialize()
ReDim mbInitialised(MultiPage1.Pages.Count - 1)
SetupPage 0
End Sub
Private Sub MultiPage1_Change()
SetupPage MultiPage1.Value
End Sub
Private Sub SetupPage(index As Integer)
If (mbInitialised(index)) Then Exit Sub
mbInitialised(index) = True
MsgBox "init page " & index + 1
'//setup here
End Sub
答案 1 :(得分:0)
我认为这是一种更简单的方法
加载UserForm:UserForm.MultiPage1.Value = 0:UserForm.Show
当数组从零开始时,多页值开始“page1”
如果你想要一个不同的页面更改.Value = 0进入页面值 - 1
例如:
加载UserForm:UserForm.MultiPage1 .Value = 4 :UserForm.Show
这会在初始化userform时将您带到“page3”多页
*编辑: 误解了一下这个问题,我的代码会把你带到页面但是在更改页面时没有执行某些操作,而是使用Alex的代码