返回列表 上一主題 發帖

[發問] 如何將表單內的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)

回復 1# dechiuan999
1.  Set mPg(k) = New myClass,你把k寫成1了
2.  UserForm上只有一個MultiPage物件,即MultiPage1,
      "PDF檔"和"AZLB檔"這兩個分頁是 MultiPage1 底下的 Page 物件,
      例如分頁"PDF檔"可用 : MultiPage1.Page1 或 MultiPage1.Page(0) 表示

TOP

回復 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

本帖最後由 stillfish00 於 2013-10-25 15:44 編輯

回復 3# dechiuan999
你要知道使用者選取時是哪一個分頁,可以在change判斷
Private Sub MultiPage1_Change()
  msgbox MultiPage1.Pages(MultiPage1.Value).Caption
End Sub

TOP

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

回復 4# stillfish00


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

謝謝大大!

TOP

本帖最後由 stillfish00 於 2013-10-25 20:04 編輯

回復 5# dechiuan999
我知道你要的是
myClass
  1. Option Explicit

  2. Public WithEvents mTxt As MSForms.TextBox
  3. Public WithEvents mCmd As MSForms.CommandButton
  4. Public WithEvents mPage As MSForms.MultiPage

  5. Private Sub mPage_Change()
  6.   MsgBox mPage.Pages(mPage.Value).Caption
  7. End Sub
複製代碼
Userform
  1. Private Sub UserForm_Initialize()
  2.    
  3.     Dim i As Long
  4.     Dim j As Long
  5.     Dim k As Long
  6.    
  7.     ReDim mTb(1 To 2)
  8.     For i = 1 To 2
  9.         Set mTb(i) = New myClass
  10.         Set mTb(i).mTxt = Me.Controls("Textbox" & i)
  11.         co1.Add mTb(i).mTxt
  12.     Next
  13.    
  14.     ReDim mCd(1 To 6)
  15.     For j = 1 To 6
  16.         Set mCd(j) = New myClass
  17.         Set mCd(j).mCmd = Me.Controls("CommandButton" & j)
  18.         co2.Add mCd(j).mCmd
  19.     Next
  20.    
  21.     ReDim mPg(1 To 1)
  22.     For k = 1 To 1
  23.         Set mPg(k) = New myClass
  24.         Set mPg(k).mPage = Me.Controls("MultiPage" & k)
  25.     Next
  26. End Sub
複製代碼
但是應該是 Userform 上有很多個 MultiPage 時這樣寫才有用吧。

TOP

回復 5# dechiuan999

  1. 表單已Dim mPg() As New myClass
  2. 不需再 Set mPg(1) = New myClass
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 stillfish00 於 2013-10-27 12:37 編輯

回復 7# GBKEE
宣告這邊是多了,但我覺得先
Dim mPg() As myClass
後面再
Set mPg(1) = New myClass
顯式地創建實體會比較好,也可以明確知道Class_Initialize()被觸發位置

TOP

回復 8# stillfish00
  1. 樓主的附檔表單頂端已Dim mPg() As New myClass
  2. 可不需再重複 Set mPg(1) = New myClass
複製代碼
  1. 如果附檔表單頂端只是Dim mPg() As myClass
  2. 當然是需再 Set mPg(1) = New myClass
  3. 那附檔表單頂端只須是Dim mPg()
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

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

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

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題