Sub Sample1()
Dim obj As Collection ' Collectionオブジェクト
Dim week As Variant ' For~Eachステートメントで使用できる型
' Collectionオブジェクトの生成
Set obj = New Collection
' String型の文字列をCollectionオブジェクトに追加する
obj.Add "Mon"
obj.Add "Tue"
obj.Add "Wed"
obj.Add "Thu"
obj.Add "Fri"
obj.Add "Sat"
obj.Add "Sun"
' For~EachステートメントでCollectionオブジェクトをVariant型の変数に取り出す
For Each week In obj
Debug.Print week
Next
' Collectionオブジェクトを破棄する
Set obj = Nothing
End Sub
■出力結果
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Sub Sample4()
Dim obj As Collection ' Collectionオブジェクト
Dim week As Variant ' For~Eachステートメントで使用できる型
' Collectionオブジェクトの生成
Set obj = New Collection
' String型の文字列をCollectionオブジェクトに追加する
obj.Add "Mon" ' 1
obj.Add "Tue" ' 2
obj.Add "Wed" ' 3
obj.Add "Fri" ' 4
obj.Add "Sat" ' 5
obj.Add "Sun" ' 6
' Beforeで「4」"Fri"の前に"Thu"を追加する
obj.Add Item:="Thu", Before:=4
' For~EachステートメントでVariant型の変数に取り出す
For Each week In obj
Debug.Print week
Next
' Collectionオブジェクトを破棄する
Set obj = Nothing
End Sub
■出力結果
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Sub Sample5()
Dim obj As Collection ' Collectionオブジェクト
Dim week As Variant ' For~Eachステートメントで使用できる型
' Collectionオブジェクトの生成
Set obj = New Collection
' String型の文字列をCollectionオブジェクトに追加する
obj.Add Key:="Mon", Item:="Monday"
obj.Add Key:="Tue", Item:="Tuesday"
obj.Add Key:="Wed", Item:="Wednesday"
obj.Add Key:="Fri", Item:="Friday"
obj.Add Key:="Sat", Item:="Saturday"
obj.Add Key:="Sun", Item:="Sunday"
' Afterで"Wed"の後に"Thu"を追加する
obj.Add Key:="Thu", Item:="Thursday", After:="Wed"
' For~EachステートメントでVariant型の変数に取り出す
For Each week In obj
Debug.Print week
Next
' Collectionオブジェクトを破棄する
Set obj = Nothing
End Sub
■出力結果
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
・Itemメソッド
あまり使いませんけど、Collectionオブジェクトの規定メンバなので、紹介しておきます
Sub Sample6()
Dim obj As Collection ' Collectionオブジェクト
Dim week As Variant ' For~Eachステートメントで使用できる型
Dim idx As Integer
' Collectionオブジェクトの生成
Set obj = New Collection
' String型の文字列をCollectionオブジェクトに追加する
obj.Add "Mon"
obj.Add "Tue"
obj.Add "Wed"
obj.Add "Thu"
obj.Add "Fri"
obj.Add "Sat"
obj.Add "Sun"
' Itemを使用する
For idx = 1 To obj.Count
Debug.Print obj.Item(idx), obj(idx)
Next
' Collectionオブジェクトを破棄する
Set obj = Nothing
End Sub
■出力結果
Mon Mon
Tue Tue
Wed Wed
Thu Thu
Fri Fri
Sat Sat
Sun Sun
Sub Sample7()
Dim obj As Collection ' Collectionオブジェクト
Dim week As Variant ' For~Eachステートメントで使用できる型
Dim idx As Integer
' Collectionオブジェクトの生成
Set obj = New Collection
' String型の文字列をCollectionオブジェクトに追加する
obj.Add "Mon"
obj.Add "Tue"
obj.Add "Wed"
obj.Add "Thu"
obj.Add "Fri"
obj.Add "Sat"
obj.Add "Sun"
' 4番目の要素を削除する
obj.Remove(4)
' Itemを使用する
For idx = 1 To obj.Count
Debug.Print obj.Item(idx)
Next
' Collectionオブジェクトを破棄する
Set obj = Nothing
End Sub
■出力結果
Mon
Tue
Wed
Fri
Sat
Sun
Sub Sample1()
Dim a() As Integer ' 配列数を指定しない
Dim b(3) As Integer ' 配列数を指定する
Dim i As Integer
' 配列数を変更する(既存データを初期化)
ReDim a(3)
a(0) = 0
a(1) = 1
a(2) = 2
a(3) = 3
Debug.Print UBound(a) ' 「3」を返す
For i = 0 To UBound(a)
Debug.Print a(i)
Next i
' 配列数を変更する(既存データを残す)
ReDim Preserve a(5)
a(4) = 4
a(5) = 5
Debug.Print UBound(a) ' 「5」を返す
For i = 0 To UBound(a)
Debug.Print a(i)
Next i
' 配列数を変更する(既存データを初期化)
ReDim a(8)
Debug.Print UBound(a) ' 「8」を返す
For i = 0 To UBound(a)
Debug.Print a(i)
Next i
End Sub
Sub Sample2()
Dim week As Variant
Dim day As Variant
week = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
Debug.Print UBound(week) ' 「6」を返す
' Variant型の配列はFor~Eachステートメントで取り出せる
For Each day In week
Debug.Print day
Next
End Sub
Sub Sample3()
Dim a As New Collection ' Collectionオブジェクト
Dim b As Object ' Dictionaryオブジェクト
' Dictionaryオブジェクトの生成
Set b = CreateObject("Scripting.Dictionary")
...
End Sub
Sub Sample4()
Dim a As Collection ' Collectionオブジェクト
Dim b As Object ' Dictionaryオブジェクト
' Collectionオブジェクトの生成
Set a = New Collection
' Dictionaryオブジェクトの生成
Set b = CreateObject("Scripting.Dictionary")
...
End Sub
※ま、お好みの方法で良いと思いますけどねw
■小ネタ
ReDimステートメントを使用して、ちょっとしたサンプルを記載します
Sub Sample5()
Dim week() As String
Dim day As Variant
ReDim week(6)
week(0) = "Mon"
week(1) = "Tue"
week(2) = "Wed"
week(3) = "Thu"
week(4) = "Fri"
week(5) = "Sat"
week(6) = "Sun"
Debug.Print UBound(week) ' 「6」を返す
' Variant型の配列はFor~Eachステートメントで取り出せる
For Each day In week
Debug.Print day
Next
End Sub
Sub Sample6()
Dim week() As Variant
Dim day As Variant
ReDim week(6)
week(0) = "Mon"
week(1) = "Tue"
week(2) = "Wed"
week(3) = "Thu"
week(4) = "Fri"
week(5) = "Sat"
week(6) = "Sun"
Debug.Print UBound(week) ' 「6」を返す
' Variant型の配列はFor~Eachステートメントで取り出せる
For Each day In week
Debug.Print day
Next
End Sub