我正在嘗試創建一個實用程式,它使用自定義引數啟動指定用戶表單的新實體,但我無法將所需的用戶表單傳遞給實用程式。
在一個模塊中:
Public Sub LaunchForm(MachID As String, FormType As UserForm)
Dim Form As New FormType
With Form
.MachineID = MachID
.Show
End With
End Sub
在要啟動表單的用戶表單中:
Private Sub RemovePart32_Click()
LaunchForm "Machine32", RemovePart
End Sub
當我單擊“RemovePart32”按鈕時,出現編譯錯誤“未定義用戶定義型別”。我猜我應該將用戶表單作為字串傳遞,但如果我這樣做會出現型別錯誤,我不知道如何解決這個問題。任何意見,將不勝感激。
uj5u.com熱心網友回復:
FormType實際上是您宣告為 中的引數之一的變數,LaunchForm而不是型別。所以你不能創建一個變數的新實體。
由于您要呼叫Show傳遞給的用戶表單的方法,因此LaunchForm您應該按值將用戶表單作為通用物件傳遞。
或者,您可以通過參考將用戶表單作為用戶表單的實際類傳遞,這將是用戶表單本身的名稱(即 UserForm1 或您可能命名的任何其他名稱)。
因此,例如,要將您的用戶表單作為通用物件按值傳遞,請嘗試...
Public Sub LaunchForm(MachID As String, ByVal Form As Object)
With Form
.MachineID = MachID
.Show
End With
End Sub
請注意,當涉及到物件時,傳遞給被呼叫程序的是對該物件的參考。并且該參考可以通過 ByRef 和 ByVal 傳遞。
當通過 ByRef 時,參考是按參考傳遞的,并且被呼叫的程序可以更改該參考所參考的物件。
傳遞 ByVal 時,僅傳遞參考的副本。
有關更詳細的說明,請參閱本文。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/492538.html
