Я пытаюсь реализовать пользовательский интерфейс Model-View-Presenter в VBA excel.Для этого я писал различные классы моделей.Вот пример:
Option Explicit
Private Type TModel
FilterCol As Collection
N As Integer
End Type
Private this As TModel
Public Property Get FilterCol() As Collection
Set FilterCol = this.FilterCol
End Property
Public Property Let FilterCol(ByVal value As Collection)
Set this.FilterCol = value
End Property
Public Property Get N() As Integer
Set N = this.N
End Property
Public Property Let N(ByVal value As Integer)
Set this.N = value
End Property
Этот класс с именем "FilterModel" является коллекцией объектов MSFormObject.Чтобы правильно использовать коллекцию, мне нужно новый .Поэтому код, в котором я его использую, будет выглядеть примерно так:
Sub testFilter()
Dim Filterm As FilterModel
Dim DefaultFilterLine As New FilterLine
Set Filterm = New FilterModel
Filterm.FilterCol = New Collection
'Set DefaultFilter
Filterm.FilterCol.Add DefaultFilterLine
'DoStuff
With New frmFilter
Set .Model = Filterm
.Show
End With
End Sub
Если я не new Property FilterCol, прежде чем что-то добавить, в данном случае defaultfilter, этоне работаетИтак, вот мой вопрос:
Есть ли способ перезаписать новый оператор для моего нового класса, чтобы он также был новым в коллекции FilterCol.Мое исследование дало мне понять, насколько я знаю, что это будет называться конструктором.
Но как правильно реализовать конструктор для класса VBA?
Что-то вроде:
Private Sub Class_Initialize()
Set this.FilterCol = New Collection
N = 0
End Sub
Если я сделаю это, то получуошибка в строке «Свойство Let N (Byval Value as integer)».Сообщение об ошибке гласит «требуется объект».