我有一个包含3个“顶级”页面的用户表单(使用多页功能),然后是两个顶层页面中的四个嵌套页面。
在此示例中,页面标题和名称相同。因此,具有Page4标题的页面也被命名为Page4。我发现在线代码应该在页面名称传递给它时返回页面索引:
Function fMpIndex(ByVal PageName As String)
Dim PageCounter As Long
With MultiPage1
For PageCounter = 0 To .Pages.Count - 1
If .Pages(PageCounter).Name = PageName Then fMpIndex = PageCounter: Exit Function
Next PageCounter
End With
fMpIndex = -1
End Function
这适用于顶级页面,但是,当我尝试以下内容时:
MsgBox ("This page's index is " & fMpIndex("Page5"))
对于任何嵌套页面(在本例中,第4页和第5页),则此方法返回值-1,表示该页面不存在。这是范围问题吗?上面的代码是仅搜索顶级页面而不是嵌套页面吗?
通过名称或标题或两者以编程方式引用特定页面的最安全,最可靠的方法是什么?我认为它会是这样的:
which userform.which page strip.which page.name("Page5")
在这个例子中,我只有一个userform,但如果我有两个userforms怎么办?此外,在上面的示例中,我假设必须指定两个页面条中的哪一个被引用。
理想情况下,我想要一种方法来对用户窗体中的每个页面使用绝对引用,无论它是顶级页面还是嵌套页面。
答案 0 :(得分:1)
在屏幕截图中,MultiPage1中的唯一页面是Page1,Page2和Page3。可以使用(例如)MultiPage1.Pages("Page1")
来引用它们。 MultiPage1.Pages("Page4")
不存在。
Page1包含MultiPage2,其页面为Page4和Page5。这些可以使用MultiPage2.Pages("Page4")
进行引用。
您可以通过索引引用MultiPage控件中的页面,如MultiPage1.Pages(iPageIndex)
中所示,其中iPageIndex从0变为页数减1。在屏幕截图中,MultiPage1.Pages(1)
引用了Page2,和
MultiPage2.Pages(0)
引用了第4页。