返回列表 上一主題 發帖

[發問] 如何將表單內的multipage增設物件類別呢?

[發問] 如何將表單內的multipage增設物件類別呢?

各位大大好:

  小弟在表單內的增設MULTIPAGE
有PAGE1及PAGE2並在USERFORM_INITIALIZE
增設此物件類別時,出現錯誤內容如下

執行階段錯誤-2147024809(80070057)
找不到指定物件,請問應如何修正
USERFORM1_INITIALIZE內的語法呢?

語法如下:

物件類別

Option Explicit

Public WithEvents mTxt As MSForms.TextBox
Public WithEvents mCmd As MSForms.CommandButton
Public WithEvents mPage As MSForms.MultiPage

Private Sub mCmd_Click()
   
    MsgBox mCmd.Name
   
End Sub

表單

Option Explicit
Dim mTb() As New myClass
Dim mCd() As New myClass
Dim mPg() As New myClass
Dim co1 As New Collection
Dim co2 As New Collection

Private Sub UserForm_Initialize()   
    Dim i As Long
    Dim j As Long
    Dim k As Long
   
    ReDim mTb(1 To 2)
    For i = 1 To 2
        Set mTb(i) = New myClass
        Set mTb(i).mTxt = Me.Controls("Textbox" & i)
        co1.Add mTb(i).mTxt
    Next
   
    ReDim mCd(1 To 6)
    For j = 1 To 6
        Set mCd(j) = New myClass
        Set mCd(j).mCmd = Me.Controls("CommandButton" & j)
        co2.Add mCd(j).mCmd
    Next
   
    ReDim mPg(0 To 1)
    For k = 0 To 1
        Set mPg(1) = New myClass   '語法錯誤
        Set mPg(1).mPage = Me.Controls("MultiPage" & k)
    Next            
End Sub

謝謝各位大大!

mPage2.rar (11.56 KB)

回復 2# stillfish00


    大大您好:

小弟試著將語法改成如下
也是不行呢?

ReDim mPg(1 To 2)
   
Set mPg(1) = New myClass
Set mPg(1).mPage = UserForm1.MultiPage1.Pages(0)
        
Set mPg(2) = New myClass
Set mPg(2).mPage = UserForm1.MultiPage1.Pages(1)

另小弟想在物件類別增列
Private Sub mPage_Change()
       
End Sub
內容為當使用者選取
page時能得知是
page1的名稱pdf檔
或是
page2的名稱azlb檔
是否可請大大能提供修正的
語法讓小弟學習multipage
在物件類別如何運作


謝謝您!

TOP

本帖最後由 dechiuan999 於 2013-10-25 17:38 編輯

回復 4# stillfish00


    謝謝大大的說明
小弟是了解在一段模組內
如何操作multipage
。但小弟是想試著在類別模組
內來操作multipage
。因此,小弟也在類別模組
裡宣告
Public WithEvents mPage As MSForms.MultiPage
但不知如何來操作mpage此物件對象。

謝謝大大!

TOP

本帖最後由 dechiuan999 於 2013-10-29 08:43 編輯

回復 6# stillfish00
謝謝二位大大的

TOP

回復 12# GBKEE


    謝謝版主大大。
小弟對物件類別總是不得
其門而入,對自已提問的問題
也常有不知所云。請版主大大見諒。
小弟仍有不了解之處是
已將textbox增設了物件類別
Public WithEvents mTxt As MSForms.TextBox
Public Property Set Tb(setTb As MSForms.TextBox)
    Set mTxt = setTb
End Property
此用途又為何呢?

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題