尽管标题正确,但用户窗体未初始化

时间:2019-06-04 16:11:44

标签: excel vba userform

我正在尝试编写一个新的UserForm,它在初始化时加载控件。

尽管出于某种原因,尽管出现了UserForm本身,但我编写的测试模块仍未在运行时在UserForm中加载任何内容。

模块代码:

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

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

1 个答案:

答案 0 :(得分:1)

list_id, list_name = zip(*[(a['id'], a['name']) for a in list_dic])

正在添加按钮...只是不在Set submit = UserForm1.Controls.Add("Forms.CommandButton.1", "Submit") 实例上。

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

这应该解决它:

UserForm1

Set submit = Me.Controls.Add("Forms.CommandButton.1", "Submit") 模块是一个类,具有可视设计器组件和将UserForm属性值设置为VB_PredeclaredId的类。 预声明的实例是该隐藏的True属性值的结果,并且根据语言规范,其名称与类本身的名称匹配,即VB_PredeclaredId。通过使用UserForm1而不是Me作为限定符,您可以引用当前正在运行的任何实例,而不是该类的默认实例

避免在表单的代码隐藏中引用默认实例。