2017-12-07 13 views
0

VBAを使用して配列内のオブジェクトプロパティにアクセスする方法を理解できません。私のような配列作成しました:Array VBAのオブジェクトプロパティへのアクセス

Dim objectArray(10) as Variant  
Dim counter as Integer   'used to move to next element in array 

次へ]を、私は、オブジェクトを宣言し、配列に格納します。

Dim object as Variant 
objectArray(0) = object   'object stored in array[0] 
counter = counter + 1    'increment counter 

私は関数に配列を渡したいです。

Public function(objectArray() as Variant) 

はこれまでのところ、私がそれをデバッグしているときに働いているようだ:

Call function(objectArray()) 

この関数は次のようにオブジェクトの配列を受け取ります。私のobjectArray()はオブジェクトを含んでいるようです。 Iは、配列内のオブジェクトを格納する場合、debugerは

objectArray(0)(1,1) .... 'this is in the Watch section of the debugger 

を示すIは、配列の最初の位置に、そのオブジェクトのプロパティにアクセスしたいです。そのオブジェクトには、名前、いくつかの値、および日付が含まれます。私は、マクロを実行すると、私は「いくつかのエラー発生し、13、型の不一致」を取得し、

しかし
Dim separateVar as Variant    'declare new var to hold "name" 

separateVar = objectArray(0)(1,1).Value 

のように、そのオブジェクトのプロパティにアクセスしようとしてきました。オブジェクトのプロパティ値に誤ってアクセスしていますか?

ご協力いただければ幸いです。オブジェクトへのアクセスに関する記事を見つけることは簡単ですが、個々のプロパティにアクセスすることを見つけることは非常に困難です。

+0

'objectArray(0).Value' – ACatInLove

+0

あなたのオブジェクト割り当てに' Set'がありません。ここのオブジェクトや配列について本当に話していますか? –

答えて

0

これを試してください。

Sub T() 
    Dim objInner1(1) As String 
     objInner1(0) = "Hello" 
     objInner1(1) = "World 1" 

    Dim objInner2(1) As String 
     objInner2(0) = "Hello" 
     objInner2(1) = "World 2" 

    Dim objInner3(1) As String 
     objInner3(0) = "Hello" 
     objInner3(1) = "World 3" 

    Dim objOuter(2) As Variant 
     objOuter(0) = objInner1 
     objOuter(1) = objInner2 
     objOuter(2) = objInner3 

    PrintArray objOuter 
End Sub 

Sub PrintArray(objArray As Variant) 
    Dim idx As Long 
    For idx = LBound(objArray) To UBound(objArray) 
     Debug.Print objArray(idx)(0) & " " & objArray(idx)(1) 
    Next idx 
End Sub 

'Hello World 1 
'Hello World 2 
'Hello World 3 
+0

@Kostak K.このソリューションをありがとうございます。それは私がやっていたことよりも簡単な方法です。 –

関連する問題