2016-05-10 51 views
1

我有一個可怕的問題。我建立了許多屬性的怪異類,其中也有數組屬性。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 
+0

尊敬的MATS,非常感謝,我沒有清楚:我想添加一個數組到一個數組屬性,它仍然是空的,爲此Id喜歡使用callbyname。所以我只需要vblet,我不會運行任何子:)無論如何,我到處搜索它,到目前爲止沒有解決方案,也許根本沒有解決方案。再次我們是在vba的限制:( – viktorajosagos

+0

對不起,我誤解了這個問題;刪除了我以前的評論。這是新的:如果你想要做的不符合內置的'CallByName'你需要編寫一個適用於這些限制的工具,你可以循環訪問數組,並明確地爲每個條目調用你的屬性。 – Leviathan

+0

你必須使用typelib,如http://www.vbforums.com/showthread。 php?405366-RESOLVED-Using-CallByName -with-variable-number-of-arguments – Jules

回答

0

GARG出租物業接受的指數,一個字符串:你不能通過一個完整的數組來代替

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 
+0

我試過了,謝謝Tim,它似乎很有希望:) – viktorajosagos

相關問題