2016-10-04 10 views
0

各ユニークキーにリンクされた複数の配列を持つ辞書が移入されました。例:VBA - 辞書からの配列データの抽出

Dim dict As New Scripting.Dictionary 
Dim x(5) As Variant 
Dim prNumbers() as String 
Dim prArrCount as Integer 

prArrCount = 0 

For i = 2 To lastRow 
    'Populate relevant values (prNr, description etc. by reading them in. 

    'Save the values in an array 
    x(0) = prNr 
    x(1) = description 
    x(2) = priority 
    x(3) = deliveryDate 
    x(4) = delivery 
    x(5) = endUser 

    'Add to the dictionary if the key does not yet exist in it 
    If Not dict.Exists(prNr) Then 
     dict.Add prNr, x 
     prNumbers(prArrCount) = prNr 
     prArrCount = prArrCount + 1 
    Else 
     If priority < dict(prNr)(2) Then 
      dict(prNr) = x 
     End If 
    End If 

Next i 

ここでは、辞書全体の内容を印刷します。辞書の内容を配列に読み込み、次のように配列を出力しようとします。

For i = 3 To (prArrCount + 3) 
    x = dict(prNumbers(i - 3)) 

    Range("A" & i).Value = i - 2 
    Range("B" & i).Value = x(0) 
    Range("C" & i).Value = x(1) 
    Range("D" & i).Value = x(2) 
    Range("E" & i).Value = x(3) 
    Range("F" & i).Value = x(4) 
Next i 

問題は、それが私が行ごとにアレイにX = dictの(prNumbers(I - 3))辞書の内容を保存することができないことであるを。これを行う方法、または配列を印刷する別の方法はありますか?

+1

場合は 'X'が配列です。値を格納する配列の場所を指定する必要があります – Zac

+0

ありがとうございます!辞書のさまざまな項目を保存する場所を指定しましたが、タイプミスマッチが発生しました。それはdict(prNumbers(i - 3))(0)セクションから来ます。私は辞書のキーとして配列を使用するいくつかの問題があると仮定しているが、どのようにこれを修正することができますか? –

答えて

0

辞書値をそのような配列に割り当てることはできません。このような

何かが細かいです: 'X'は、コードのあなたの最初のビットから配列がある

Sub TT() 

    Dim dict As New Scripting.Dictionary 
    Dim x(3) As Variant, y() As Variant 

    x(0) = "A" 
    x(1) = "B" 
    x(2) = "C" 
    x(3) = "D" 

    dict.Add "blah", x 

    y = dict("blah") 

    Debug.Print Join(y, ",") 

End Sub 
関連する問題