clsCOMSortedCollectionクラスについて

 clsCOMSortedCollectionクラスは、基本的にはVBA標準のCollectionクラスと同じです。
ただし、Addメソッドで項目を追加したとき、常にKeyの昇順となるようにソートされます。
そのため、AddメソッドのKey引数は省略できません。また、after,before引数はありません。

 このクラスを使用すれば、ソート済みのCollectionオブジェクトを簡単に作成できます。
例えば、VBA標準のDir関数を使用すると任意のフォルダ配下にあるすべてのファイルの名前を取得する事が出来ますが、
取得する順番はファイル名でソートされていません。
 このクラスを使用すれば、ファイル名の昇順でソートされたCollectionオブジェクトへの参照を簡単に取得できます。

サンプル:test_clsCOMSortedCollection.xls

注意:
現在、Keyの降順にソートする事は出来ません。出来るのは昇順だけです。(面倒くさかったから作らなかった。)
Keyはバイナリモードで比較されます。

プロパティの定義
Public Property Get Count() As Long
コレクションの個数を返します。
Public Property Get Keys() As Collection
昇順でソートされたキー(String型のコレクションオブジェクトへの参照)を返します。
Public Property Get Collection() As Collection
Keyの昇順でソートされたコレクションオブジェクトへの参照を返します。


メソッドの定義
Public Sub Add(ByVal Item As Variant, ByRef key As String)
ソート済みコレクションにアイテムを追加します。
Public Function Item(ByRef index As Variant) As Variant
ソート済みコレクションからアイテムを取得します。
Public Sub Remove(ByRef index As Variant)
ソート済みコレクションからアイテムを取り除きます。

プロパティとメソッドの詳細
count
Public Property Get Count() As Long

プロパティの説明:
コレクションの個数を返します。
必ず、0以上の整数を返します。

Keys
Public Property Get Keys() As Collection

プロパティの説明:
昇順でソートされたキー(String型のコレクションオブジェクトへの参照)を返します。
コレクションの個数が0の場合でもNotingは返しません。

コレクションはKeyが設定されています。
つまり、
Dim objSC As New clsCOMSortedCollection
Dim ojbC As Collection

Call ojbSC.Add(1,"a")
Set objC = objSC.Keys
とした場合、
Debug.Print ObjC.Item("a")
はエラーになりません。("a"が出力されます。)

Collection
Public Property Get Collection() As Collection

プロパティの説明:
Keyの昇順でソートされたコレクションオブジェクトへの参照を返します。
コレクションの個数が0の場合でもNotingは返しません。

コレクションはKeyが設定されています。
つまり、
Dim objSC As New clsCOMSortedCollection
Dim ojbC As Collection

Call ojbSC.Add(1,"a")
Set objC = objSC.Keys
とした場合、
Debug.Print ObjC.Item("a")
はエラーになりません。(1が出力されます。)

Add
Public Sub Add(ByVal Item As Variant, ByRef key As String)

メソッドの説明:
  ソート済みコレクションにアイテムを追加します。
in引数:
item:追加するアイテム
key:キー名(CollectionクラスのAddメソッドと違い、省略できません。)
スローするエラー:
457:引数keyで指定した文字列がすでに、コレクションにある場合。
Item
Public Function Item(ByRef index As Variant) As Variant

メソッドの説明:
  ソート済みコレクションからアイテムを取得します。
in引数:
index:キー名or1以上の番号
スローするエラー:
5:引数indexで指定した文字列がKeysに無かった場合
9:引数indexでしていした番号が0以下だったり要素数を超えていた場合
Remove
Public Sub Remove(ByRef index As Variant)

メソッドの説明:
  ソート済みコレクションからアイテムを取り除きます。
in引数:
index:キー名or1以上の番号
スローするエラー:
5:引数indexで指定した文字列がKeysに無かった場合
9:引数indexでしていした番号が0以下だったり要素数を超えていた場合