У меня проблемы с перемещением массивов между объектами класса. Идея состоит в том, чтобы добавить определенные данные к объекту класса, изменить некоторые параметры в двухмерном массиве и вернуть этот массив в основную процедуру. Я перепробовал все, от массива publi c до даже помещения массива в словарь publi c, но я не могу вывести его из класса.
Sub ClassArray()
Dim Arr() As Variant
ReDim Arr(1 To 2) As Variant
Arr(1) = "A"
Arr(2) = "B"
Set Class = New ClassObject
Class.Add Arr
Debug.Print Class.Count
Range("A1:C3") = Class.Matrix
End Sub
My Class Object:
Private ClassMatrix(1 To 1, 1 To 1) As Variant
Private Counter As Long
'------
Private Sub Class_Initialize()
'Appaerently putting the ReDim statement here doesn't do anything
End Sub
'------
Public Sub Add(ByVal Arr As Variant)
x = 3
y = 3
Dim ClassMatrix() As Variant
ReDim ClassMatrix(1 To y, 1 To x)
If Arr(1) = "A" Then
ClassMatrix(1, 1) = 1
End If
If Arr(2) = "B" Then
ClassMatrix(3, 3) = 1
End If
End Sub
'------
Property Get Count() As Long
For x = 1 To 3
For y = 1 To 3
If ClassMatrix(y, x) = 1 Then Counter = Counter + 1
Next y
Next x
Count = Counter
End Property
'------
Property Get Matrix() As Variant
Matrix = ClassMatrix
End Property
Что также доставило мне много проблем с объектами классов, так это то, что отладчик никогда не выделяет строку, вызывающую проблему? Я считаю, что это затрудняет их отладку по сравнению с вашей обычной процедурой.