Как сохранить для хранения объекта в Thisworkbook VBA? - PullRequest
0 голосов
/ 19 октября 2018

Мне кажется, что я злоупотребляю объектом 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? Когда я закрываю книгу (что было бы хорошо для меня) или также когда возникают ошибки или после определенных событий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...