我刚刚发现Me-Object和UserFormName不是同一对象。这是我的示例:
我有两个自定义类FilterLine和FilterModel。您只需要知道FitlerModel有一个属性N(如果已更新则设置为=)。还有一个名为frmFilter的用户窗体。
Sub testFilter()
Dim Filterm As FilterModel
Set Filterm = New FilterModel
With New frmFilter
Set .Model = Filterm
.ExampleSub ' This is the interesting part
.Show
End With
End Sub
这是用户窗体frmFilter的ExampleSub:
Public Sub ExampleSub()
Debug.Print Me.Model.N ' gives a 0
Debug.Print frmFilter.Model.N ' gives an error "Object not Found"
End Sub
我觉得这很有趣。为什么它们不同,又有什么不同?
答案 0 :(得分:3)
它们引用不同的对象。 UserForm只是具有默认实例的类,该类是通过按名称调用类时创建的免费对象。
Me.Model.N
引用您实例化的对象。
frmFilter.Model.N
引用用户表单的默认实例,该实例没有与之关联的模型。
此处有关于此问题的出色文章:https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/
答案 1 :(得分:0)
仅当显式创建UserForm(使用“插入”->“ User Form”)并显示在项目浏览器树中时,才能使用UserForm.Object
。
如果用户窗体未显示在项目浏览器树中,则如果使用UserForm.Object