2017-03-31
ExcelVBA覚書 Dictionaryループ
基本的にScripting.Dictionaryは、
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
If Not dic.Exists(a) Then
dic.Add a,b
End If
みたいに、Existsメソッドを利用することが多いのだが、
やはり1つずつ確認して処理を行うこともなくはない。
Dim i As Long
For i = 0 To dic.Count - 1 Step 1
debug.print dic.Keys()(i) & "-" & dic.Item(i)
Next i
もしくは、
Dim v As Variant
For Each v In dic.Keys()
debug.print CStr(v) & "-" & dic(v)
Next
で、いずれも、Keys() と両括弧を付けるところがポイント。
色々サイトを見てみたのだが、この()が抜けていたり、ItemがItemsになっていたりして、混乱している記載が多く、ここまでたどり着くのに英語のサイトまで見に行ってしまった。
非常にやっかいだが、もともとこういう使い方するようなオブジェクトではないのだろうから、仕方ない。
ちなみに削除するときはRemoveを使う。(Deleteではない)
Dim v As Variant
For Each v In dic.Keys()
dic.Remove v
Next