callbyname работает с элементом массива как procname
У меня ужасная проблема. Я создал чудовищные классы со многими свойствами, среди которых есть и свойства массива.
если я хотел бы сослаться на них с CALLBYNAME, это не будет работать, давайте посмотрим пример:
public sub whatsoever()
Dim alfaarray() As Variant
Dim g As Integer
Dim obj As Object
ReDim alfaarray(4)
Set obj = New teszt
For g = 0 To 4
alfaarray(g) = "g" & CStr(g)
Next g
Call obj.init
CallByName obj, "GARG", VbLet, alfaarray
end sub
учебный класс: teszt
Dim pgarg() As String
Property Let GARG(index As Long, value As String)
pgarg(index) = value
End Property
Property Get GARG(index As Long) As String
GARG = pgarg(index)
End Property
Public Sub init()
ReDim pgarg(4)
End Sub
1 ответ
Ваш GARG
свойство Let принимает индекс и строку: вместо этого вы не можете передать весь массив
Public Sub whatsoever()
Dim g As Long
Dim obj As Object
Set obj = New teszt
obj.init
For g = 0 To 4
CallByName obj, "GARG", VbLet, g, "g_" & CStr(g)
Next g
Debug.Print obj.GARG(0) '>> g_0
Debug.Print obj.GARG(1) '>> g_1
End Sub