引用用户窗体对象时“Varg”参数的目的是什么?

K.D*_*ᴠɪs 3 vba initialization userform

我一直认为,在 VBA 中,我们无法在创建/初始化用户窗体时将变量传递给用户窗体。但是,我在对象名称后面放置了一个左括号,并且出现了一个工具提示,表明这可能不一定是真的(或者更有可能我只是误解了它)

在此输入图像描述

因此,出于好奇,我尝试看看是否可以使用以下方法将变量传递给用户表单varg

在此输入图像描述

但毫不奇怪,它不起作用


所以最终的问题是目的是什么varg?对我来说,它实际上看起来像是用于索引用户表单的多个单独实例,因为它实际上似乎是属性的参数.Item(),而不是实际对象本身,但这是我所知道的创建多个用户表单的唯一方法对象是通过将它们设置为变量来实现的,例如:

Dim uf1 As MyUserForm, uf2 as MyUserform
Set uf1 = New MyUserform
set uf2 = New Myuserform
Run Code Online (Sandbox Code Playgroud)

用户表单实际上可以通过使用此varg变量的不同方式进行序列化和索引吗?


注意:这不是一个关于如何将外部变量传递给用户窗体的问题 - 我知道在初始化后有多种方法可以实现此目的(通过对象代码模块内的公共属性、函数或变量传递,甚至更不推荐)标准模块中的外部全局/公共变量)。

GSe*_*erg 5

UserForm有一个默认属性 Controls。它返回一个Controls类的实例。

该类Controls又具有默认属性Item(varg) As Object

所以With New udfVendorDrillDown(varg)与 相同With New udfVendorDrillDown.Controls.Item(varg),这可能不是您希望的那样。

您仍然无法将参数传递给 UserForms 构造函数。或者事实上任何类构造函数。