Sub hoge()
Dim dic As Scripting.Dictionary
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "小川", 83
dic.Add "山田", 75
dic.Add "田中", 92
Debug.Print dic.Item("小川")
Debug.Print dic.Keys(0), dic.Items(0)
End Sub
Sub hogehoge()
Dim dic As New Scripting.Dictionary
dic.Add "小川", 83
dic.Add "山田", 75
dic.Add "田中", 92
Debug.Print dic.Item("小川")
Debug.Print dic.Keys(0), dic.Items(0)
End Sub
2020/07/20 02:20
小川慶一さんのコメント
(コメントID: 6716)
受講生 さん:
こんにちは。
ここの書き方の説明は外部連携講座ではしているのですが、簡単に書くと、以下のとおりです。
Dim dic As Scripting.Dictionary '変数定義のみをしている Set dic = CreateObject("Scripting.Dictionary") 'オブジェクトを生成して、定義済の変数に割り当てている
Dim dic As New Scripting.Dictionary 'オブジェクトを生成して変数に割り当てている
受講生さんの投稿
(投稿ID: 4797)
いつもお世話になっております。連想配列の記述法について質問です。
もともと講座本編の方では連想配列については以下「hoge」の記述をされていたかと思います。
「As Scripting.Dictionary」や「Set dic = CreateObject("Scripting.Dictionary")」がそれぞれ何を意味しているのかも明確に理解せずに、とりあえず丸覚えしておりました・・・。
しかし今回の補講では「hogehoge」のような記述になっております。
これらのコードがそれぞれ何を意図しているのか、どのように使い分けるのかをご教示頂けると幸いです。
小川慶一さんのコメント
(コメントID: 6716)
こんにちは。
ここの書き方の説明は外部連携講座ではしているのですが、簡単に書くと、以下のとおりです。
Dim dic As Scripting.Dictionary '変数定義のみをしている
Set dic = CreateObject("Scripting.Dictionary") 'オブジェクトを生成して、定義済の変数に割り当てている
Dim dic As New Scripting.Dictionary 'オブジェクトを生成して変数に割り当てている
ざっくりいうと、 hoge で2行かけて書いていることを、 hogehoge では1行でやっています。
hogehogeの書き方で問題ありません。
Scripting.Dictionaryではまずありませんが、「hogehogeの書き方ではうまく行かないが、hogeの書き方でならば動く」ということもままあります。