[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Dictionaryについて』(まー)
例えば、A列のIDをkeyにして、C列、F列、G列を格納し、インデックス番号みたいな感じで、key(1)はC列key(2)はF列という感じにはできますか?
Item に配列を使用するとか? (seiya)
seiyaさんから回答に補足。 1つは留意点。1つは、Dictionaryに格納した配列のセルへの転記。
・留意点 たとえばDIctionaryのデータ(Item)に3列の要素を持った配列をセットしたとする。 その配列内の要素を★1のようにしても、実際には反映されない。 プロシジャ引数のbyValのような扱いになる。要素の変更は★2のように、Itemをいったん 取り出し、取り出した配列で変更を加えて戻してやる必要がある。
Sub Sample1() Dim dic As Object Dim v As Variant
Set dic = CreateObject("Scripting.Dictionary")
dic("A") = Array("X", "Y", "Z")
MsgBox dic("A")(0) MsgBox dic("A")(1) MsgBox dic("A")(2)
dic("A")(1) = "V" '★1 MsgBox dic("A")(1)
v = dic("A") '★2 v(1) = "V" '★2 dic("A") = v '★2 MsgBox dic("A")(1)
Set dic = Nothing
End Sub
・セルへの転記 DictionaryのKeyもItemも、一次元配列なので、通常の配列のように、セル領域にまとめて 転記することができる。ただし、上記のようにItemが1次元配列の場合、セル範囲(二次元領域)に落とし込む際は 以下のようにTransposeを2回かける必要がある。
Sub Sample2() Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
dic("A") = Array("X1", "Y1", "Z1") dic("B") = Array("X2", "Y2", "Z2") dic("C") = Array("X3", "Y3", "Z3") dic("D") = Array("X4", "Y4", "Z4")
Range("A1:C4").Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(dic.items))
Set dic = Nothing
End Sub
ぶらっと立ち寄り
DictionaryにDictionaryを格納したって良いんじゃよ 簡素過ぎたので追記: 要は何を入れるのかは作り手の自由なので、 「1つの値しか持てない〜」と思い込む必要はないですよ、 と言うアドバイスでした。 (ご近所PG)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.