В чем разница между Me-Object и UserFormName-Object? - PullRequest
0 голосов
/ 10 октября 2018

Я только что узнал, что 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

Здесь ExampleSub пользовательской формы frmFilter:

Public Sub ExampleSub()
Debug.Print Me.Model.N ' gives a 0

Debug.Print frmFilter.Model.N ' gives an error "Object not Found"
End Sub

Я нахожу это довольно интересным, что здесь происходит? Чем они отличаются и чем они отличаются?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Они относятся к разным объектам.UserForm - это просто класс, имеющий экземпляр по умолчанию, свободный объект, созданный при вызове класса по имени.

Me.Model.N

Ссылка на объектВы экземпляры.

frmFilter.Model.N

Относится к экземпляру пользовательской формы по умолчанию, с которым не связана модель.

Хорошозапись по этому вопросу здесь: https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/

0 голосов
/ 10 октября 2018

Вы можете использовать UserForm.Object только в том случае, если пользовательская форма явно создана (используя Вставка -> Форма пользователя) и показана в дереве проводника проекта.Если пользовательская форма не отображается в дереве проводника проекта, вы получите сообщение об ошибке «Объект не найден», если вы используете UserForm.Object

...