返回列表 上一主題 發帖

[發問] 利用VBComponent動態新增表單,在利用Class執行動作時,出現Automation錯誤

[發問] 利用VBComponent動態新增表單,在利用Class執行動作時,出現Automation錯誤

我利用 VBComponent 的方式新增了一個表單

Sub Report_Make_Form1()

          Dim MyNewForm3 As VBComponent

         Set MyNewForm3 = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
        
   
    Print #1, Now & " 開始建立 UserForm"
   
    With MyNewForm3
         .Properties("Caption") = "Report_Generate"
         .Properties("Width") = 570
         .Properties("Height") = 350
         .Name = "Report_Generate_Form"
          With .Designer
                       With .Controls.Add("forms.Multipage.1")
                                  .Name = "MultiPage_Step"
                                   .Left = 10
                                   .Top = 5
                                   .Height = 250
                                   .Width = 550
                                   .Font.Name = "Comic Sans MS"
              End With
             之後就 Multipage 中的 Page(0)、Page(1)中新增了一些控制項
              With .Controls.Add("forms.CommandButton.1")
              '建立個 Button 來按一步讓 MultiPage 到下一頁
                         .Name = "GoNext_Btn"
                        .Left = 280
                        .Top = 258
                        .Height = 50
                        .Width = 70
                        .Caption = "下一步"
                        .Font.Name = "標楷體"
                        .Font.Size = 14
              End With

      End With
       Set Class_obj3.MyFormObject1 = MyNewForm3 '.Designer
         Set Class_obj3.MyMultiPage1 = MyNewForm3.Designer.Controls("MultiPage_Step")
      然後利用 Class 方式執行動作
       With .CodeModule
                  .InsertLines i + 4, "Set Class_obj3.MyNewGoNextButton1 = Controls(""GoNext_Btn"")"

       End With

  End With


Class 3 的內容

Public MyFormObject1 As Object
Public MyMultiPage1 As MSForms.MultiPage

Private Sub MyNewGoNextButton1_Click()
                 With MyMultiPage1
        
                        .Value = .Value + 1
            
             End With

End Sub

在執行到 .Value=.Value+1 時就會出現 Automation 用戶端中斷已啟動物件的連線,然後整個 Excel 就重開,請目是怎麼回 事?

補充一下,我有在執行此行前利用將值吐到一個檔案的方式是可以吐出目前在哪一面的 ~~
Print #1,   MyMultiPage1..Value

TOP

謝謝你 ~~~ 我試了,果然沒問題 ~~
但因為我還需要將整個 Form 這個傳過來Class,因為需要再處理 ~~
所以想說是否可以將這個Form傳到 MyFormObject1後再作處理
MyFormObject1

TOP

我又試了另一個方法,在
Sub Report_Make_Form1()
將變數 TestVar1="MultiPage_Step"
另外再 多設定
Set Class_obj3.MyFormObject1 = MyNewForm3.Designer

於 Class 3 中

用 MyFormObject1.Controls(TestVar1).Value=MyFormObject1.Controls(TestVar1).Value + 1
卻出現 'Value'方法 ('IMultiPage'物件)失敗,請問是何原因

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題