快速問題,VBA MS Excel:我可以在模塊中編寫UserForm代碼嗎?
有沒有一種方法可以在模塊中編寫我的Userform代碼?
我問這個問題的原因是因爲我有一個多頁面的用戶表單,其後面的代碼量越來越大。出於組織目的,我希望能夠在不同模塊中分隔代碼。但我不知道這是否可以爲用戶窗體完成(除了從用戶窗體事件中調用子程序)。
有沒有辦法在模塊中編寫UserForm代碼,而無需從用戶窗體代碼調用子例程?
謝謝,
快速問題,VBA MS Excel:我可以在模塊中編寫UserForm代碼嗎?
有沒有一種方法可以在模塊中編寫我的Userform代碼?
我問這個問題的原因是因爲我有一個多頁面的用戶表單,其後面的代碼量越來越大。出於組織目的,我希望能夠在不同模塊中分隔代碼。但我不知道這是否可以爲用戶窗體完成(除了從用戶窗體事件中調用子程序)。
有沒有辦法在模塊中編寫UserForm代碼,而無需從用戶窗體代碼調用子例程?
謝謝,
的一種方法是outlined here涉及限定一類和添加控件以動態的形式,然後將其與所述類的事件相關聯。
不過,從你的描述來看,這聽起來像是你的UserForm做得太多了。我建議你考慮創建其他形式,而不是試圖從單一形式做所有事情。也許,您可以創建一個類來存儲您可能創建的兩個或三個表單所共有的屬性(和行爲)。在打開第一個(主)表單時實例化類。
其實很簡單。表單模塊中的代碼可以調用其他模塊中的子例程。因此,簡單地爲特定例程剪切代碼並將其粘貼到另一個模塊中,並適當命名,然後在表單模塊中放置例程的名稱來調用它。唯一的問題是,當代碼位於單獨的模塊中時,不能使用Me關鍵字。如果你在你的代碼中使用它,那麼將該表單作爲參數傳遞並用你的變量替換Me。一個簡單的例子:假設你有orinally
Sub OK_Click()
If Me.txtName<>"" then
MsgBox "Ok",vbOkOnly,"It Worked"
End If
End Sub
然後您可以創建一個單獨的模塊中的以下內容:
Sub DoOkClick(f as UserForm)
if f.txtname<>"" then
MsgBox "Ok",vbOkOnly,"It Worked"
End If
End Sub
,然後用替換鍵點擊代碼
Sub Ok_Click
DoOkClick Me
end sub