Excel 尽管标头正确,但用户表单未初始化
我正试图编写一个新的UserForm,在初始化时加载控件 无论出于何种原因,我编写的测试模块在运行时都不会在UserForm中加载任何内容,尽管UserForm本身确实出现了 模块代码: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
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?FWIWLoad check
是多余的/no-op.@PeicongChenMSForms
是定义CommandButton
类的类型库的名称。@MathieuGuindon有新东西要学,谢谢您指出。@SJR抱歉这么晚了,但第一段代码是如何在Excel工作簿中实际执行宏。第二位应该是初始化UserForm时发生的,但初始化仅在创建UserForm并在第一位中显示时开始。
Set submit = Me.Controls.Add("Forms.CommandButton.1", "Submit")