へっぽこヘタレシステム管理者の管理人です。
さて・・・
管理人は、素人レベル程度ですが、少しだけマクロを触れます。
しかし、ちょっと難しくなると手も足もでません。
その中でも【配列】や【連想配列】も超苦手なんですが、少しだけネットで調べて触ってみました。
配列
まずは配列です。
【X()】という配列の中に数字を格納してみます。
【X(5)】とすると【0~5】までの6つの数字が格納できます。
Sub test()
Dim X(5) As Variant
For i = 0 To 5 '5までOK
X(i) = i * 10
Next i
For i = 0 To UBound(X) '配列の全てまで
Debug.Print X(i)
Next i
End Sub
これを実行すると・・・
イミディトウインドウに次の数字が出力されます。
0
10
20
30
40
50
ちなみに【For i = 0 To UBound(X)】は、配列のインデックスの全てとなります。
試しに【For】の部分を【i=3 to 5】に変更すると・・・
For i = 3 To 5
30
40
50
【0~3行】までは、空白が挿入されます。
配列のインデックス【0~2】番目には何も挿入されないようです。
【X(i)】
連想配列(Dictionary)
次は、連想配列です。
テーブルの様なイメージでしょうか?
(キー、アイテム1、アイテム2、アイテム3、・・・・)
と格納できます。
次のコードを実行してみると・・・
【Y】という連想配列に数値を格納できます。
Sub test1()
Dim Y As Object
Set Y = CreateObject("Scripting.Dictionary")
For i = 1 To 5
Y.Add i, i * 10
Next i
For i = 0 To Y.Count - 1 '配列の全てまで(配列は0スタートなので-1する)
Debug.Print Y.keys()(i) & " " & Y.Items()(i)
Next i
Debug.Print Y.keys()(4) '0から5番目のキー
Debug.Print Y.Items()(4) '0から5番目のアイテム
' Debug.Print Y.Key(1) 'エラーになる
Debug.Print Y.Item(5) 'キー番号のアイテム
Set Y = Nothing
End Sub
イミディトウインドウに次のとおり出力されます。
1 10
2 20
3 30
4 40
5 50
5
50
50
配列同様にインデックスは【0】からスタートする様です。
この為、配列の中身を全てみる為には・・・
【 For i = 0 To Y.Count – 1 】
のとおり【Y.count】から【-1】とします。
キーの中身を見るには・・・
【Y.kye()(i)】
と記載し、配列のインデックス番号のキーを【debug.print】で出力できます。
アイテムの中身を見るには・・・
【Y.item()(i)】又は【Y.item(i)】
と記載します。
アイテムについては、
【Y.item()(i)】の場合は、配列のインデックス番号のアイテムを
【Y.item(i)】 の場合は、配列のキー番号のアイテムを
【debug.print】で出力できます。
こちらも、【For】の部分を【i=3 to 5】に変更すると・・・
Sub test1()
Dim Y As Object
Set Y = CreateObject("Scripting.Dictionary")
For i = 3 To 5
Y.Add i, i * 10
Next i
For i = 0 To Y.Count - 1 '配列の全てまで(配列は0スタートなので-1する)
Debug.Print Y.keys()(i) & " " & Y.Items()(i)
Next i
Debug.Print Y.keys()(2) '0から3番目のキー
Debug.Print Y.Items()(2) '0から3番目のアイテム
Debug.Print Y.Item(5) 'キー番号のアイテム
Set Y = Nothing
End Sub
イミディトウインドウに次のとおり出力されます。
3 30
4 40
5 50
5
50
50
配列と異なり、インデックスの【0】番目から数値が格納される様です。
コメント