尽管适当 header,用户窗体仍未初始化

Userform not initializating despite proper header

我正在尝试编写一个在初始化时加载控件的新用户窗体。

无论出于何种原因,我编写的测试模块在 运行 时没有在用户窗体中加载任何内容,尽管用户窗体本身确实出现了。

模块代码:

Sub test()

Dim check As New UserForm1

Load check
check.Show

End Sub

用户表单代码:

Private Sub UserForm_Initialize()

Dim submit As MSForms.CommandButton
Set submit = UserForm1.Controls.Add("Forms.CommandButton.1", "Submit")

With submit
    .Caption = "Submit"
End With

End Sub

当我 运行 模块时没有按钮出现,但是,当我 运行 用户窗体代码直接正确初始化时。有什么建议吗?

Set submit = UserForm1.Controls.Add("Forms.CommandButton.1", "Submit")

那个 添加按钮...只是不在 check 实例上。

参见UserForm1.Show;通过在 UserForm1 模块中引用 UserForm1,您已经引用了该表单的 默认实例 ,它可能是也可能不是当前正在初始化的实例。

这应该可以解决问题:

Set submit = Me.Controls.Add("Forms.CommandButton.1", "Submit")

UserForm 模块是一个 class,具有可视化设计器组件和 VB_PredeclaredId 属性值设置为 Truepredeclared 实例是隐藏的 VB_PredeclaredId 属性值的结果,根据语言规范,它的名称与 class 本身的名称相匹配,即 UserForm1.通过使用 Me 作为限定符而不是 UserForm1,您指的是 当前 运行 的任何实例,而不是 class'默认实例.

避免在表单的 code-behind.

中引用默认实例