- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 118
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-5-15
               
|
- Public obj As New Class1
- Sub Auto_Open()
- Dim MyForm As VBComponent
- For Each vbc In ThisWorkbook.VBProject.VBComponents
- If vbc.Type = 3 Then '檢查表單模組
- If vbc.Name = "Test_Form1" Then Exit Sub '有該表單則跳出程序
- End If
- Next
- Set MyForm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) '新增表單模組
- With MyForm
- .Properties("Caption") = "Test_Form" '表單標題
- .Name = "Test_Form1" '表單名稱
- With .Designer
- With .Controls.Add("Forms.CommandButton.1") '新增按鈕
- .Top = 50
- .Left = 100
- .Height = 20
- .Width = 20
- .Caption = ">>"
- .Name = "Move_Data"
- End With
- For i = 1 To 2
- With .Controls.Add("Forms.Listbox.1") '清單
- .Top = 10
- .Left = (i - 1) * 100 + 20
- .Height = 120
- .Width = 80
- .Name = "MyList" & i
- End With
- Next
- End With
- With .CodeModule '在表單模組內新增程序
- .InsertLines 1, "Private Sub UserForm_Initialize()"
- .InsertLines 2, "MyList1.List=array(1,2,3,4,5,6,7,8,9)"
- .InsertLines 3, "Set obj.MyBut = Controls(""Move_Data"")" '將按鈕加入物件類別
- .InsertLines 4, "End Sub"
- End With
- End With
- With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule '寫入關閉檔案程序的程式碼
- .InsertLines 1, "Private Sub Workbook_BeforeClose(Cancel As Boolean)" & Chr(10) & _
- "With ThisWorkbook" & Chr(10) & _
- ".VBProject.VBComponents.Remove .VBProject.VBComponents(""Test_Form1"")" & Chr(10) & _
- "n = .VBProject.VBComponents(""ThisWorkbook"").CodeModule.CountOfLines" & Chr(10) & _
- ".VBProject.VBComponents(""ThisWorkbook"").CodeModule.DeleteLines 1, n" & Chr(10) & _
- ".Save" & Chr(10) & _
- "End With" & Chr(10) & _
- "End Sub"
- End With
- 'OpenForm '開啟檔案自動開啟表單
- End Sub
- Sub OpenForm()
- 'Test_Form1.Show 0 '開啟表單
- End Sub
複製代碼 回復 10# C.F
應該是你的表單已經存在,而你在一次執行該程序,產生名稱衝突
試試看 |
|