teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

Dictionaryを配列にする

2019/01/03 09:25

投稿

TanakaHiroaki
TanakaHiroaki

スコア1065

answer CHANGED
@@ -1,6 +1,8 @@
1
1
  VBAにて「CollectionのなかにDictionaryを入れる」を実現してみました。
2
2
  なお、JsonConvertのテストは行っていないことをご承知おきください。
3
-
3
+ <追記>
4
+ Dic.RemoveAll が空欄の原因となっていましたのでコードを修正しました。
5
+ JsonConvertのテストも実施済みです。
4
6
  ```VBA
5
7
  Sub create_account2()
6
8
 
@@ -22,9 +24,10 @@
22
24
  Set JsonObject = CreateObject("Scripting.Dictionary")
23
25
 
24
26
  '==ここから修正
25
- 'Dictionaryの定義
27
+ 'Dictionaryの定義(配列を用いた)
26
- Dim Dic As Object
28
+ Dim Dic(1 To 2) As Object
27
- Set Dic = CreateObject("Scripting.Dictionary")
29
+ Set Dic(1) = CreateObject("Scripting.Dictionary")
30
+ Set Dic(2) = CreateObject("Scripting.Dictionary")
28
31
 
29
32
  'Collectionの定義
30
33
  Dim Col As Collection
@@ -33,15 +36,12 @@
33
36
  For i = 2 To record_count 'record_count =3
34
37
  For j = 1 To collumn_count 'collumn_count=3
35
38
  'Dictionaryにレコードを入れる
36
- Dic.Add Cells(1, j).Value, Cells(i, j).Value
39
+ Dic(i - 1).Add Cells(1, j).Value, Cells(i, j).Value
37
40
  Next j
38
41
  'CollectionにDictionaryオブジェクトを入れる
39
- Col.Add Dic
42
+ Col.Add Dic(i - 1)
40
- Dic.RemoveAll
41
43
  Next i
42
44
 
43
- Set Dic = Nothing
44
-
45
45
  JsonObject.Add "id", 1
46
46
  JsonObject.Add "shipTo", Col
47
47