2017-10-15 82 views
0

我有3“顶层”的页面(使用多页的功能),然后加入4-嵌套页的每个内的顶层页的2的单个用户窗体。见下面的示例图片。我在编程上引用嵌套页面时遇到困难。EXCEL VBA:在用户窗体选择特定页面时MultiPages嵌套

Screenshot of Nested Multipage Userform

在这个例子中,页面标题和名字是相同的。因此,带有Page4标题的页面也被命名为Page4。我发现,应该返回页面索引时,页面名称传递给它别人的代码在线:

===

功能fMpIndex(BYVAL页面名称作为字符串)

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 

结束功能

===

也能正常工作的顶级页,但是,当我尝试类似:

MSGBOX(“这页的索引为” & fMpIndex(“第5页”))

任何嵌套页(在该例子中,4 & 5两个页面),则此方法返回的值-1 ,表明该页面不存在,但显然它确实存在。这是范围问题吗?上面的代码是否只搜索顶层页面而不是嵌套页面?

什么是按名称或标题或两者以编程方式引用特定页面的最安全,最可靠的方法是什么?我相信它会是这样的:

这userform.which页strip.which page.name(“第5页”)

在这个例子中,我只有1个窗体,但我想知道:如果什么我有2个用户表单?而且,在上面的例子中,我已经假定必须指定哪两页被引用......这是我现在的一个假设,可能不是必需的。

理想情况下,我想在窗体的方式来使用的绝对引用的每一页,无论它是一个顶级页或嵌套页。如果确实如上述规范那样,有人可以提供示例代码吗?

谢谢

回答

0

在你的屏幕截图,在MultiPage1唯一页面第一页,第二页,第3页和。这些可以使用(例如)MultiPage1.Pages("Page1")来引用。 MultiPage1.Pages("Page4")不存在。

Page1包含MultiPage2,其页面为Page4和Page5。这些可以使用MultiPage2.Pages("Page4")进行参考。

您可以通过索引引用多页控件中的页面,如MultiPage1.Pages(iPageIndex),其中iPageIndex从0到页数减一。在您的屏幕截图中,MultiPage1.Pages(1)参考Page2和 MultiPage2.Pages(0)参考Page4。