BP писал(а):Мне нужно чтобы модуль класса помнил ссылку на массив модуля формы или другого модуля и мог с ним работать не только тогда когда его передали, а в любое время. VarPtr хорошо конечно, но как я буду узнавать длину массива? Массив то динамический. Нужно чтобы модуль класса сам знал сколько у массива элементов.
Самый простой путь - получить Variant по ссылке и сохранить его на будущее.
В классе или еще где:
Private vPriv As Variant
Sub StoreArray(v As Variant)
' VarType(v) должен быть &H4000(VT_BYREF)+&H2000(vbArray)+vb...(vbLong и т.д.)
' Это можно (или нужно) проверять
CopyMemory vPriv, v, 16
End Sub
И вызов
Dim x() As Long, x2(2) As Long, s() As String, s2(2) As String
ReDim x(2), s(2)
StoreArray x
StoreArray x2
StoreArray s
StoreArray s2
До тех пор, пока исходный массив существует в памяти, vPriv будет указывать на этот массив.
А использовать этот массив в классе или еще где так: vPriv(i) без всяких там API.