パスワードを忘れた? アカウント作成

vnaoivoibonaeaさんのトモダチの日記みんなの日記も見てね。 スラドのストーリを選ぶための補助をお願いします。

13447705 journal
日記

vnaoivoibonaeaの日記: 【メモ】【VBA】Collectionをマップとして使用してはいけない

日記 by vnaoivoibonaea

1.登録済みのキーか判断する手段がない。【回避可能】
Collection自体には、保存済みか否か判断するためのメソッドはありません。
そのため、取得処理を呼び出し、エラーが発生するか否かで判断するしか手段がありません。
【回避方法】エラーを検出して未登録だと判断する
例えば、こんな感じ(動作未確認)

Function ContainsKeyForVBColl(list As Collection, key As String) As Boolean
    On Error Goto KeyIsNotRegistered
        Call list.Item(key)
        ContainsKeyForVBColl = True
        Exit Function
KeyIsNotRegistered:
        ContainsKeyForVBColl = False
        Exit Function
End Function

2.全角、半角、大文字、小文字を区別しない
MSDNでは明言されていませんが、CollectionのKey値は全角、半角、大文字、小文字を区別しません。
#一意な文字列表現とあるけど、=演算子で比較すると同一でないといわれる。。。

Dim col As Collection
Set col = New Collection
col.Add Item:= "hoge", Key:="fuga"
col.Add Item:= "hoge", Key:="FUga" '登録済みと怒られる

typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...