2016-03-18 4 views
1
Sub foobar() 

Dim wine As Variant 
wine = Array("Red", "White", "Rose", "Sparkling") 

Dim spirits As Variant 
spirits = Array("Vodka", "Whiskey", "Rum", "Gin") 

Dim beer As Variant 
beer = Array("Ale", "Lager", "Pilsner", "Stout") 

Dim inventory As Variant 
inventory = Array(wine, spirits, beer) 

Range("A1") = inventory(1) 

End Sub 

に私の現在の考えは在庫(x)が(0)常に戻りますのでVBA点心の名前を取得し、インデックスでは、Array

wine = Array("wine", "Red", "White", "Rose", "Sparkling") 

spirits = Array("spirits", "Vodka", "Whiskey", "Rum", "Gin") 

beer = Array("beer", "Ale", "Lager", "Pilsner", "Stout") 

inventory = Array(wine, spirits, beer) 

、配列内の配列の名前を置くことですそのように配列の名前。

Dimensionsの名前、つまりスピリットを表示するには「A1」を表示したいが、スピリット自体は配列なので、「A1」ではinventory(1)(0)と同等です。

ワイン、スピリッツ、ビールを飲む方がいいですか?上記のように、名前を配列に含めるよりも名前が返されますか?

+0

これらは可変であり、オブジェクトではありません。必要な名前を持つ別の配列を文字列として格納する必要があります。 –

答えて

3

名前で名前を参照する場合は、辞書が1つの解決策です。

Sub foobar() 

    Dim wine As Variant 
    wine = Array("Red", "White", "Rose", "Sparkling") 

    Dim spirits As Variant 
    spirits = Array("Vodka", "Whiskey", "Rum", "Gin") 

    Dim beer As Variant 
    beer = Array("Ale", "Lager", "Pilsner", "Stout") 

    Dim inventory As Object, k 
    Set inventory = CreateObject("Scripting.Dictionary") 
    With inventory 
     .Add "Wine", wine 
     .Add "Spirits", spirits 
     .Add "Beer", beer 
    End With 

    'access a specific item 
    Debug.Print Join(inventory("Beer"), ",") 

    'loop over items 
    For each k in inventory.keys 
     Debug.Print k, Join(inventory(k), ",") 
    Next k 

End Sub 
関連する問題