VBA:如何通过表单作为参数
我有一个简单的用户表单上有一个button。 我想将这个表单传递给另一个模块中的一个函数 – 但是即使在同一个模块内,它也不能按预期工作:
Private Sub Test(ByRef oForm As MSForms.UserForm) Debug.Print "caption: >" & oForm.Caption & "<" End Sub Private Sub CommandButton3_Click() Debug.Print "caption: >" & Me.Caption & "<" Test Me Debug.Print "caption: >" & Me.Caption & "<" End Sub
当我点击button时,它打印到debugging控制台:
caption: >UserForm1< caption: >< caption: >UserForm1<
所以在Test()
子项里, Caption
是空白的。
任何想法,为什么这是行不通的?
注意:如果我使用Variant
作为参数types,它的工作原理
typesUserForm
不直接等同于特定的用户表单的一个实例,并提供一个稍微不同的接口。
将as Object
传递给as Object
:
Private Sub Test(Form As Object)
或者对于types安全的方法UserForm可以实现一个接口:
Private Sub Test(Form As IMyForm)
您必须传递UserFormtypes的variables。 这意味着如果您的表单名称是MyForm
那么签名就是
Private Sub Test(ByRef oForm As MyForm)