つらつら Excel VBA

私の備忘録です。

ArrayList

Callの有無が混在してますが書き方の一例なので見逃して下さい。

'.NET Framework 3.5 (.NET 2.0および3.0を含む) がインストールされている必要がある。
'「Windowsの機能の有効化または無効化」で設定変更の必要がある。
Sub TestArrayList()
    
    Dim arrayList
    Set arrayList = CreateObject("System.Collections.ArrayList")
    
    Dim myArray, a
    
    '値の追加
    arrayList.Add "c"
    arrayList.Add "e"
    arrayList.Add "a"
    arrayList.Add "d"
    arrayList.Add "b"
    
    '個別参照
    Debug.Print arrayList.Item(0)
    
    '全削除
    arrayList.Clear
    
    '値の追加
    Call arrayList.Add("004")
    Call arrayList.Add("005")
    Call arrayList.Add("001")
    Call arrayList.Add("003")
    Call arrayList.Add("002")
    
    '配列のソート
    arrayList.Sort
    
    '順序反転
    arrayList.Reverse
    
    '削除
    Call arrayList.RemoveAt(3)
    
    '場所指定挿入
    arrayList.Insert 2, "挿入"
    
    '全部参照
    For Each a In arrayList
        Debug.Print a
    Next
    
    '数の確認
    Debug.Print arrayList.Count & "個"
    
    '値の存在確認
    If arrayList.Contains("001") Then Debug.Print "ある!"
    
    '値を探して配列番号を返す。0~。なければ-1。
    Debug.Print arrayList.IndexOf_3("001")
    Debug.Print arrayList.IndexOf_3("b")
    Debug.Print arrayList.LastIndexOf("005") '後ろから探す。
    
    '一次配列化(Variant)
    myArray = arrayList.toArray
    
    Set arrayList = Nothing
    
End Sub

以上。