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
親愛なるMAts、ありがとう、私は明確ではなかった:Idは空の配列プロパティに配列を追加するのが好きで、この目的のためにはcallbynameを使いたい。だから私はvbletしか必要としません。私はサブを実行しません:)とにかく、私はどこでもそれを探しました。これまでのところ解決策はなく、まったく解決策がないかもしれません。もう一度私たちはvbaの限界にいます:( – viktorajosagos
申し訳ありませんが、私はこの問題を誤解していました;私の前のコメントを削除しました:これは新しいものです:あなたがしたいことがビルトインの 'CallByName'制限を回避する独自のコードを書くことができます。ここで配列をループし、各エントリごとに明示的にプロパティを呼び出すことができます。 – Leviathan
http://www.vbforums.com/showthreadに記載されているtypelibを使用する必要があります。 php?405366 - 解決済み - CallByName-with-variable-number-of-with引数 – Jules