Мне кажется, что я злоупотребляю объектом ThisWorkbook
, сохраняя мою модель в объекте ThisWorkbook.Вот мой код в ThisWorkbook:
Опция Явная
Private Type TView
Model As UImodel
'UserInterface As UIFrm
End Type
Private this As TView
Friend Property Get Model() As UImodel
Set Model = this.Model
End Property
Friend Property Set Model(ByVal value As UImodel)
Set this.Model = value
'Validate
End Property
Причина, по которой я это делаю, заключается в следующем: я хочу сохранить свою модель для пользовательского интерфейса, чтобы позже использовать ее позжевремя.Например, этот сабвуфер пользовательского интерфейса может запускаться несколько раз и должен добавлять или удалять из модели, а не всегда создавать новый.
Sub UI_Main()
Dim UIm As UImodel
Dim MatSelection As frmMaterial
Dim MainUIfrm As UIFrm
Set MainUIfrm = New UIFrm
Set MatSelection = New frmMaterial
Set UIm = New UImodel
If ThisWorkbook.Model Is Nothing Then
Set ThisWorkbook.Model = UIm
Else
Set UIm = ThisWorkbook.Model
End If
With MainUIfrm
.Show
If .IsCancelled Then Exit Sub
End With
' Material Selection with empty model
MaterialSelection:
With MatSelection
Set .Model = UIm
.Show
Set UIm = .Model
Set ThisWorkbook.Model = UIm
If .IsCancelled Then Exit Sub
If .IsBack Then
GoTo MaterialSelection
End If
End With
End Sub
Таким образом, этот саб может работать несколько раз и получать доступ к модели, хранящейся в ThisWorkBook.объект.Это означает, что пользователь не теряет свой выбор.Теперь у меня вопрос:
Когда завершаются экземпляры в объекте ThisWorkBook? Когда я закрываю книгу (что было бы хорошо для меня) или также когда возникают ошибки или после определенных событий