視覚障害者きうっちの自立への道

視覚障害者きうっち(S52年生)が気の向くままに日々の生活をツラツラとつづるブログ

在勤生活1749日目

2019-12-23 18:15:40 | 在勤生活
 VBAの話。最近、今更ながらDictionaryオブジェクトに凝っており(笑)。
VBAでDictionaryの簡易版といえばCollectionオブジェクトなのですが、
ちょっとマニアックな話をするとこのCollectionオブジェクト、要素をAddメソッドで追加する際にItemとKeyを追加することができるのですが、
VBAのCollectionは要素番号等で指定してKeyだけを取り出す、ということができないんですよね…まぁわたしが知らないだけかもしれませんが(^^;。
で、ついこの間までCollectionの上位互換のような存在のDictionaryも同じだと思い込んでいたのですが-。…すみません完全に勉強不足でしたDictionaryさんごめんなさいm(_ _)m(笑)。
↓のように、DictionaryをFor Each ~Nextループで回していくと、Collectionと違って
取り出せるのが【Item】ではなく【Key】だから、↓のような書き方でKeyとItem、両方取り出すことができたんですね…。
何だか本当に今更ながらの発見ですorz。で、今更ながらDictionaryで【こういうこと】ができるということが分かったので、
今更ながらDictionaryオブジェクトにハマっているというわけですわ(苦笑)。しかもこれも今更なのですが、あ~Dictionaryってこんなに便利だったんだって(笑)。


Sub DictionaryTest()

Dim ws_d As New Dictionary
Dim objSh As Worksheet

For Each objSh In ThisWorkbook.Worksheets
ws_d.Add Key:=objSh.Name, Item:=objSh.Range("a1").Value
Next

Dim objKey As Variant
For Each objKey In ws_d
MsgBox "Key: " & objKey & "," _
& "Item: " & ws_d(objKey), vbInformation
Next

End Sub

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする