Я попытался реализовать это несколько разных способов и, очевидно, что-то не хватает.Как реализовать массив, заполненный объектами внутри класса в VBA
Класс Куните, который включает в себя массив объектов Cpanel -
Private pPanel() As CPanel
Public Property Get Panel(Optional RIndex As Integer) As CPanel
If RIndex = 0 Then
Panel = pPanel
Else
Panel = pPanel(RIndex)
End If
End Property
Public Property Let Panel(Optional RIndex As Integer, Value As Variant)
If RIndex = 0 Then
pPanel = Value
Else
pPanel(RIndex) = Value
End If
End Property
Тело модуля:
Function UnitBom(Unit As CUnit) As CUnit
Set UnitBom = Unit
Dim Panels() As CPanel
ReDim Panels(1 To UnitBom.NumPanels)
Dim PanelTemp As CPanel
Set PanelTemp = New CPanel
Dim i As Variant
For i = 1 To UnitBom.NumPanels
Set Panels(i) = PanelTemp
Next i
UnitBom.Panel = Panels()
это работает
Panels(1).Width = 1
Когда я запускаю это я получаю «переменную Object или с переменной блока не установлена. "
UnitBom.Panel(1).Width = 2
Вы, ребята, должны будете простить меня, потому что я, очевидно, не очень хорошо объяснил. Мне нужен массив объектов CPanel внутри объекта CUnit. Проблема в том, что когда я создаю объект CUnit, я не знаю, как большой размер массива CPanel. Я пытался создать временный массив, который является надлежащим размером, как только я узнаю, каким должен быть этот размер, и затем установите массив CUnit равным временному массиву, чтобы «размер» его. Вероятно, есть намного лучший способ выполнить одно и то же.
@ bluebass44, вы прошли через это? – user3598756
@ bluebass44, было бы неплохо, если бы вы дали правильную обратную связь людям, пытающимся помочь вам – user3598756