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
Другие вопросы по тегам