重複なしのリストは、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
おわりに
このページのに、実行時エラーが発生すること、そして避ける方法が存在し、具体例を示さされておりました♪ありがとう存じます!
また、辞書オブジェクトについてのドキュメントは次のページとなります。
以上です。
