我希望能夠在我的VBA程序啓動後根據需要創建表單。這可能嗎?VBA,可以通過代碼創建新的標準用戶窗體嗎?
我有搜索stackoverflow和跨網絡,無法找到明確的答案。如果可以完成,我還沒有找到代碼來完成它。
我只是尋找一些非常基本的通用代碼來做到這一點,如果可能的話。
我希望能夠在我的VBA程序啓動後根據需要創建表單。這可能嗎?VBA,可以通過代碼創建新的標準用戶窗體嗎?
我有搜索stackoverflow和跨網絡,無法找到明確的答案。如果可以完成,我還沒有找到代碼來完成它。
我只是尋找一些非常基本的通用代碼來做到這一點,如果可能的話。
一般而言,你可以做你以後的事情,儘管你遺漏了很多細節,所以很難說。
表單就像任何其他類一樣,所以可以實例化其中的很多類。
Public Sub CreateForms()
Dim i As Integer
For i = 1 To 3
Dim u As UserForm1
Set u = New UserForm1
u.Show False ' <- Set modal to false so the new form will not block the loop.
Next i
End Sub
這應該創建三份相同的表單。
編輯
審查蒂姆的評論之後,我已經添加了下面。
Dim u As UserForm1
Set u = New UserForm1
Dim t As MSForms.CommandButton
Load u
With u
Set t = u.Controls.Add("Forms.CommandButton.1", "cmdButton1", True)
With t
.Caption = "Dynamic Button"
.Left = 10
.Top = 10
End With
.Height = 300
.width = 600
.Caption = "Dyanmic Form"
.Show
End With
它看起來像你需要已經創建了一個空白表格,但你可以很簡單的東西,作爲要生成任何形式的基礎。
更多信息:http://msdn.microsoft.com/en-us/library/aa277578%28v=vs.60%29.aspx
如果你的項目中已經有了一個表單,那麼這個方法就行得通了 - 我想OP會詢問如何從頭開始創建表單。 – 2014-10-17 15:10:10
@TimWilliams啊。我想你是正確的。我第一次沒有這樣讀。 – Seth 2014-10-17 17:03:15
添加形式的例子:http://stackoverflow.com/questions/26408483/difference-between-declaring-a-userform-as-object-vs-msforms-userform#comment41466507_26408483 – 2014-10-17 15:12:17
而且 - http://j-walk.com/ss/excel/tips/tip76.htm – 2014-10-17 17:11:39