UserForm.Multipage.Pages,两个图书馆中的第 class 页
UserForm.Multipage.Pages, Page class in two libraries
我正在处理一个用户窗体,试图循环访问多页中的控件。
用户表单有 2 个多页(MultiPage1 和 MultiPage2)。
Multipage2 包含在 Multipage1 中。
当只有 MultiPage1 存在时,我可以 运行 以下代码:
For Each pPage In frmValidationTest.MultiPage1.Pages
但是在创建这个嵌套系统后,我再次尝试 运行 它,显示以下错误:
"Type Mismatch"(在 For Each pPage 行中)
变量pPages声明如下:
Dim pPage as Page
我有 运行 Debug.Print 模式来检查拼写错误问题,但一切正常("frmValidationTest.MultiPage1.Pages.Name" 实际上打印输出)
当我查看 pPages 时,它声明该变量为 Nothing。
才发现声明变量的时候有2个类同名"Page".
不确定这是怎么回事,这正常吗?我认为我不应该为同一个超类设置 2 个不同的 类。 (-F2- Ref Lib 只显示 1).
关闭、重启等后,问题依旧。
希望只是小事!
非常感谢。
Excel
和 MSForms
库中都有 Page
class。因此,您最好在声明中使用库名称。例如,如果您的表单如下所示:
那么这段代码应该可以工作:
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
我正在处理一个用户窗体,试图循环访问多页中的控件。
用户表单有 2 个多页(MultiPage1 和 MultiPage2)。
Multipage2 包含在 Multipage1 中。
当只有 MultiPage1 存在时,我可以 运行 以下代码:
For Each pPage In frmValidationTest.MultiPage1.Pages
但是在创建这个嵌套系统后,我再次尝试 运行 它,显示以下错误:
"Type Mismatch"(在 For Each pPage 行中)
变量pPages声明如下:
Dim pPage as Page
我有 运行 Debug.Print 模式来检查拼写错误问题,但一切正常("frmValidationTest.MultiPage1.Pages.Name" 实际上打印输出)
当我查看 pPages 时,它声明该变量为 Nothing。
才发现声明变量的时候有2个类同名"Page".
不确定这是怎么回事,这正常吗?我认为我不应该为同一个超类设置 2 个不同的 类。 (-F2- Ref Lib 只显示 1).
关闭、重启等后,问题依旧。
希望只是小事!
非常感谢。
Excel
和 MSForms
库中都有 Page
class。因此,您最好在声明中使用库名称。例如,如果您的表单如下所示:
那么这段代码应该可以工作:
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