首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserForm.Multipage.Pages,两个库中的Page类

UserForm.Multipage.Pages,两个库中的Page类
EN

Stack Overflow用户
提问于 2016-06-04 23:44:21
回答 1查看 1.2K关注 0票数 1

我正在处理一个用户表单,试图在多页中循环这些控件。

用户表单有2个多页(MultiPage1和MultiPage2)。

Multipage2包含在Multipage1中。

当只有MultiPage1存在时,我可以运行以下代码:

代码语言:javascript
复制
For Each pPage In frmValidationTest.MultiPage1.Pages

但是,在创建了这个嵌套系统之后,并且我试图再次运行它,将显示以下错误:

“类型不匹配”(在每个pPage行中)

变量pPages声明如下:

代码语言:javascript
复制
Dim pPage as Page

我运行了Debug.Print模式来检查拼写错误问题,但是一切正常("frmValidationTest.MultiPage1.Pages.Name“实际上打印了一个输出)

当我查看pPages时,它声明变量是空的。

我刚刚意识到,在声明变量时,我有两个同名为"Page“的类。

不知道怎么回事,这正常吗?我想我不应该为同一个超级班上两个不同的班。(-F2-参考文献仅显示1)。

在结束、重新开始等之后,问题仍然存在。

希望只是一件小事!

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 03:39:08

Page库和Excel库中都有一个MSForms类。因此,您最好在声明中使用库名。例如,如果您的表单如下所示:

那么这段代码应该可以工作:

代码语言:javascript
复制
Option Explicit

Private Sub CommandButton1_Click()

    ' declare variables using specific libraries
    Dim mpgItem1 As MSForms.MultiPage
    Dim mpgItem2 As MSForms.MultiPage
    Dim pagItem1 As MSForms.Page
    Dim pagItem2 As MSForms.Page
    ' other variables
    Dim ctlItem As Control
    Dim intCounter1 As Integer
    Dim intCounter2 As Integer
    Dim intPageCount1 As Integer
    Dim intPageCount2 As Integer

    Set mpgItem1 = UserForm1.MultiPage1
    ' get page count of first multi page
    intPageCount1 = mpgItem1.Pages.Count

    ' not using for..each loop ...
    For intCounter1 = 0 To intPageCount1 - 1
        Set pagItem1 = mpgItem1.Pages(intCounter1)
        MsgBox pagItem1.Name
        For Each ctlItem In pagItem1.Controls
            ' looking for nested multi page
            If TypeName(ctlItem) = "MultiPage" Then
                ' same code as for first multipage
                Set mpgItem2 = ctlItem
                intPageCount2 = mpgItem2.Pages.Count
                For intCounter2 = 0 To intPageCount2 - 1
                    Set pagItem2 = mpgItem2.Pages(intCounter2)
                    MsgBox pagItem2.Name
                Next intCounter2
            End If
        Next ctlItem
    Next intCounter1

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37636079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档