Sub 連想配列TEST()
'【変数宣言】
Dim ScrDic As Object
Set ScrDic = CreateObject("Scripting.Dictionary")
'【要素追加】
ScrDic.Add "test1", 100
ScrDic.Add "test2", 200
ScrDic.Add "test3", 300
ScrDic.Add "test4", 400
ScrDic.Add "test5", 500
'【要素数確認】
Debug.Print "要素数:" & ScrDic.count '「5」が出力される
'【値の更新】
ScrDic("test2") = 201 '方法1
ScrDic.Item("test3") = 301 '方法2
'【要素追加】 ※値の更新と同様の記述で指定したキーが存在しない場合は新規要素として追加される
ScrDic("test11") = 1100 '方法1
ScrDic.Item("test12") = 1200 '方法2
'【要素数確認】
Debug.Print "要素数(追加後):" & ScrDic.count '「7」が出力される
Debug.Print ""
'【登録した順に全要素を取得する】
For jjj = 1 To ScrDic.count 'countは純粋な総数だが、呼び出す際は0スタートなので注意
Debug.Print jjj & " キー:" & ScrDic.Keys()(jjj - 1) & _
" 値:" & ScrDic.Item(ScrDic.Keys()(jjj - 1)) '要素番号を使用して値を取得する(Addした順に取得可能)
Next jjj
Debug.Print ""
'【キーを使って値を取り出す】
Debug.Print "キー「test1」の値: " & ScrDic("test1") '方法1
Debug.Print "キー「test1」の値: " & ScrDic.Item("test1") '方法2
Debug.Print ""
'【キーを使って要素番号を取り出す】
' →調査中(不可能?)
'【要素番号を使ってキーor値を取り出す】
Debug.Print "3番目の要素のキーは" & ScrDic.Keys()(2) '例:2を指定すると3番目のキーを取得
Debug.Print "3番目の要素の値は" & ScrDic.Item(ScrDic.Keys()(2)) '例:2を指定すると3番目の値を取得
Debug.Print ""
'【要素が存在するかを確認】
Debug.Print "キー「test4」が存在するか:" & ScrDic.exists("test4") '要素が存在するかをチェック(出力:True)
Debug.Print ""
'【要素の削除】
ScrDic.Remove "test1" 'キーを指定したRemove ※指定したキーが存在しない場合はエラーとなる
ScrDic.Remove ScrDic.Keys()(2) '要素番号を指定したRemove 例:2を指定すると3個目の要素が削除される
'【要素を削除するとそれ以降の要素が繰り上がる事を確認】
Debug.Print "3番目の要素のキーは" & ScrDic.Keys()(2) & "(繰り上がり確認)" '例:2を指定すると3番目のキーを取得
Debug.Print "3番目の要素の値は" & ScrDic.Item(ScrDic.Keys()(2)) & "(繰り上がり確認)" '例:2を指定すると3番目の値を取得
Debug.Print ""
'【要素が存在しない場合は出力されない】
Debug.Print ScrDic("test100")
Debug.Print ScrDic.Item("test101")
End Sub
関連
コメント