У меня ужасная проблема. Я создал чудовищные классы со многими свойствами, среди которых есть свойства массива.callbyname работает с элементом массива as 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
Дорогой MAts, Большое спасибо, я не был чист: Id хотел бы добавить массив в свойство массива, которое еще пустое, и для этой цели Id нравится использовать callbyname. так что мне нужен только vblet, я вообще не буду запускать какой-либо sub :), я искал его везде, пока нет решения и, возможно, нет никакого решения. снова мы находимся на пределе vba :( – viktorajosagos
Извините, я неправильно понял проблему, удалил мой предыдущий комментарий. Это новый: если то, что вы хотите сделать, не работает со встроенным 'CallByName', вам нужно напишите свой собственный, который работает с ограничениями. Там вы можете перебрать массив и явно вызывать свои свойства по одному для каждой записи. – Leviathan
Вы должны использовать typelib, как указано здесь http://www.vbforums.com/showthread. php? 405366-RESOLVED-Using-CallByName-with-variable-number-of-arguments – Jules