VBA用户窗体在没有显式实例化的情况下使用

4
假设我有一个名为MyUserForm的用户窗体,我会像这样使用它:
Dim form as MyUserForm
Set form = New MyUserForm
form.SomeVar = "Hi"
form.Show ' Displays "Hi" somewhere on the form

一切都很好。但是以下内容让我感到奇怪,也能够工作:

MyUserForm.SomeVar = "Hi"
MyUserForm.Show

看起来好像有一些隐式声明的对象MyUserForm,其类型恰好是MyUserForm!VBA到底在做什么?这个奇怪的习惯用法遵循什么规则?谢谢。


好的,创建两个 MyUserForm 实例,然后调用 MyUserForm.Show,你就会发现它们之间的层次关系。其中一个 MyUserForm 是活动用户窗体,你可以通过 MyUserForm.<whatever> 引用它,但当你有多个用户窗体时,使用类名进行调用是不好的做法。最好和推荐的方法是始终使用存储特定实例引用的变量名。 - user2140173
我不确定我理解这个问题。当用户窗体被添加到UserForms集合中时,您可以在VBA代码中通过其名称引用它。它的一个实例立即可以使用 - 您不必创建它类型的新实例。如果您想要有多个实例,则需要这样做。 - Kapol
1个回答

1

谢谢!这正是我一直在寻找但自己找不到的东西。 - Joaquín M López Muñoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接