重複なしのリストは、VBA の辞書オブジェクトの Key を使用することで実現可能ですの!
今回はそのコードを書くときに使えるテクニックですわ♪
応用すれば、要素が 1 種類のみかどうかを判定するチェックにも使ますわね。
ポイント
objDictionary.Add Key:=keyValue, item:=itemValue
という形だと、Key が重複した場合に実行時エラーとなる。
「実行時エラー ‘457’ このキーは既にこのコレクションの要素に割り当てられています。」- このエラーを避けるには、
objDictionary.Exists(keyValue)
で重複チェックが必要。 objDictionary(keyValue) = itemValue
と書けば、既存のキーであっても上書きするのでエラーとならない。
VBA コード例
Public Sub Test() Dim objNoDuplicateList As Object Set objNoDuplicateList = CreateObject("Scripting.Dictionary") ' ディクショナリに追加 ' 重複排除が目的のため、item ではなく、Key に追加 objNoDuplicateList("い") = Null objNoDuplicateList("い") = Null objNoDuplicateList("い") = Null objNoDuplicateList("ろ") = Null objNoDuplicateList("は") = Null ' 重複が自動的に取り除かれたリストの内容を表示 Dim v As Variant For Each v In objNoDuplicateList Debug.Print v Next v ' 要素数をカウントすれば、1種類のみの値が入力されていたかどうかのチェックも可能 If objNoDuplicateList.Count > 1 Then Debug.Print "リストに複数の値あり!" Else Debug.Print "リストには1種類の値のみ!" End If End Sub
おわりに
このページのに、実行時エラーが発生すること、そして避ける方法が存在し、具体例を示さされておりました♪ありがとう存じます!
また、辞書オブジェクトについてのドキュメントは次のページとなります。
以上です。