ここから本文です

VBAで、多次元のDictionaryを扱うことはできるでしょうか。

jyuuou0748さん

2011/9/2201:24:39

VBAで、多次元のDictionaryを扱うことはできるでしょうか。

Perlでは下記のようにして二次元の連想配列を扱えます。
これをVBAのDictionaryを使って再現することができないでしょうか。

# ハッシュ作成 #
%a = (
'a' => { 'A1'=>1, 'A2'=>2, 'A3'=>3 },
'b' => { 'B1'=>1, 'B2'=>2, 'B3'=>3 }
);

#-- 1次元のみ取出す --#
foreach my $key ( keys %a ){
print "$key, $a{$key}\n";
}
#-- 全ての値を表示する --#
foreach my $key1 ( keys %a ){
foreach my $key2 ( keys %{$a{$key1}} ){
print "$key1, $key2, ". $a{$key1}->{$key2} ."\n";
}
}

閲覧数:
18,904
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

hotosysさん

2011/9/2203:22:37

こんなのはどうでしょう。
ちなみに「#-- 1次元のみ取出す --#」の部分はハッシュをそのまま表示してるようですが、どう表示されるのでしょうか。
たぶん
a, HASH(0x3a254)
b, HASH(0x29bb384)
みたいに表示されると思うのですが。


Sub sample()
Dim dic As Object
Dim subDic As Object
Set dic = CreateObject("Scripting.Dictionary")
Set subDic = CreateObject("Scripting.Dictionary")
subDic.Add "A1", 1
subDic.Add "A2", 2
subDic.Add "A3", 3
dic.Add "a", subDic
Set subDic = CreateObject("Scripting.Dictionary")
subDic.Add "B1", 4
subDic.Add "B2", 5
subDic.Add "B3", 6
dic.Add "b", subDic

'結果表示
Dim key1 As Variant
Dim key2 As Variant
For Each key1 In dic.keys
For Each key2 In dic(key1).keys
MsgBox key1 & "," & key2 & ". " & dic(key1)(key2)
Next
Next
End Sub

質問した人からのコメント

2011/9/24 09:10:23

降参 二次元のDictionaryができることを確認できました。
有難うございました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。