Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 尽管标头正确,但用户表单未初始化_Excel_Vba_Userform - Fatal编程技术网

Excel 尽管标头正确,但用户表单未初始化

Excel 尽管标头正确,但用户表单未初始化,excel,vba,userform,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

我正试图编写一个新的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代码时,它会正确初始化。有什么建议吗

这是添加按钮。。。只是不在
检查
实例上

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

这应该可以解决这个问题:

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


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

您的第一段代码应该做什么?您是否已经创建了Userform1?FWIW
Load check
是多余的/no-op.@PeicongChen
MSForms
是定义
CommandButton
类的类型库的名称。@MathieuGuindon有新东西要学,谢谢您指出。@SJR抱歉这么晚了,但第一段代码是如何在Excel工作簿中实际执行宏。第二位应该是初始化UserForm时发生的,但初始化仅在创建UserForm并在第一位中显示时开始。
Set submit = Me.Controls.Add("Forms.CommandButton.1", "Submit")