VBAで可変列のリストを使う Collection

redimを使わない方法。
Collectionが使える
Dim bbb As Collection
Set bbb = New Collection'インスタンス生成
Call bbb.Add(“あいうえお”)
取り出しは
Debug.Print bbb.Item(1)
http://members3.jcom.home.ne.jp/daruma_kyo/info/redim_or_collection.html
キー指定もできるらしい。
Dim MyCollect as New Collection
MyCollect.Add 10, “KAMOKU1001″' ⇒ MyCollect(“KAMOKU1001”)
で10を取得できる
http://www.moug.net/tech/exvba/0150077.htm
Collectionのキー存在は以下の方法でできる

Function isMemberOfCollection(col As Collection, query) As Boolean
Dim item
For Each item In col
If item = query Then
isMemberOfCollection = True
Exit Function
End If
Next
isMemberOfCollection = False
End Function

使うときは、

If isMemberOfCollection(myCollection, myValue) Then
MsgBox “エラー:” & vbLf & vbLf _
& “値が重複しています。” & myValue
End
End If

http://dqn.sakusakutto.jp/2008/03/vba.html
VBA CollectionのKeyの存在をチェックするには?
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200807/08070014.txt
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200406/200406_04060109.html
エラートラップしか無い
On Error Gotoでエラートラップ
組むとなるとこんな感じか?

Function isCollectionKey(col As Collection, query) As Boolean
On Error GoTo colError ' エラー処理を行います。
col.item (query) 'キーより取り出し
isCollectionKey = True 'エラーが起きなければ到達するはず
Exit Function
colError:
isCollectionKey = False
End Function

また、入っているキーを削除する方法
removeを使う。
Collection.remove(キー)
http://jitte.net/index.php?VBA%2FHash

タイトルとURLをコピーしました