Так что это будет одноэлементный паттерн; Есть несколько способов сделать это в VBA. Я дам вам два.
1) Создайте новый модуль, назовем его FileDetailsBuilder
. В этом модуле дайте ему частный экземпляр вашего FileDetails
класса. Затем откройте функцию publi c, которая будет возвращать свой экземпляр, или создайте новый, если он не существует.
Option Explicit
Private mFD As FileDetails
Public Function GetObject() As FileDetails
If mFD Is Nothing Then
Set mFD = New FileDetails
End If
Set GetObject = mFD
End Function
Теперь, когда вы создаете новые File
объекты, вы можете установить их * Элемент 1009 *, использующий следующую строку кода:
Set mFileDeatils = FileDetailsBuilder.GetObject()
Элемент экземпляра mFD
будет работать до тех пор, пока ваше приложение работает.
2 ) Вы можете изменить некоторый код в своем классе FileDetails
, чтобы он воспринимался как отдельный предварительно объявленный объект. Для этого вам нужно экспортировать класс и изменить некоторый код, который вы не видите в VBE.
В текстовом редакторе в верхней части экспортированного файла .cls вы увидите некоторые назначения атрибутов. Одним из которых является VB_PredeclaredId
. Ну, мой друг, вы можете отредактировать этот файл .cls и установить для этого атрибута значение true:
Attribute VB_PredeclaredId = True
Сохраните файл и импортируйте его обратно в проект VBE. Теперь вам не нужно создавать экземпляр этого объекта. Просто используйте его как объект c. Когда вы создаете новые File
объекты, присваивайте их элементам так:
Set mFileDeatils = FileDetails '// note the lack of new keyword