'既に登録されているかを確認
If A.exists("A") = True Then MsgBox "登録されています"
では、解説していきます。
Dictionaryに既にキーが登録されているかを確認
「Dictionary」に既にキーが登録されているかを確認してみます。
「Exists」を使う
「Dictionary」に既にキーが登録されているかを確認するには、「.Exists」を使います。
「Exists」を使う
「Exists」は、こんな感じで、「キー」を入力して存在するかを確認できます。
'「"A"」が登録されているかを確認する
If A.exists(キー) = True Then
「キー」が登録されていると、「True」が返ってきます。
「Exists」で登録されているかを確認
「Exists」で「"A"」が登録されているかを確認してみます。
Sub TEST1()
'辞書を作成
Dim A
Set A = CreateObject("Scripting.Dictionary")
'辞書に登録する
A.Add "A", "10"
If A.exists("A") = True Then
MsgBox "登録されています"
Else
MsgBox "登録されていません"
End If
End Sub
では、実行してみます。
結果は、「登録されています」となりました。
「Dictionary」に登録したイメージは、こんな感じです。
このイメージのように、既に「"A"」という「キー」が登録されているので、正しく判定できています。
キーを登録する際に「Exists」で確認する
キーを登録する際に「Exists」で確認して登録すると、エラーを回避することができます。
既に登録されている場合はエラーとなる
既に登録されている場合はエラーとなります。
既に登録している値を登録してみる
既に登録している「"A"」を登録してみます。
Sub TEST2()
'辞書を作成
Dim A
Set A = CreateObject("Scripting.Dictionary")
'辞書に登録
A.Add "A", "10"
A.Add "A", "10" '←同じキーはエラーになる
End Sub
では、実行してみます。
エラーになる
エラーとなりました。
登録されていない場合に登録する
エラーを回避するために、登録されていない場合に登録する、というVBAコードを追加します。
Sub TEST3()
'辞書を作成
Dim A
Set A = CreateObject("Scripting.Dictionary")
'辞書を登録
A.Add "A", "10"
'辞書に登録されていない場合
If A.exists("A") = False Then
A.Add "A", "10" '辞書を登録
End If
'辞書の値を出力する
Dim B
For Each B In A
Debug.Print B & " " & A(B)
Next
End Sub
Sub TEST4()
'辞書を作成
Dim A
Set A = CreateObject("Scripting.Dictionary")
'セルの値をループ
For i = 2 To 6
'辞書に登録されていない場合
If A.exists(Cells(i, "A").Value) = False Then
'セルの値を辞書に登録
A.Add Cells(i, "A").Value, Cells(i, "B").Value
End If
Next
'辞書の値を出力
Dim B
For Each B In A
Debug.Print B & " " & A(B)
Next
End Sub
Sub TEST5()
'辞書を作成
Dim A
Set A = CreateObject("Scripting.Dictionary")
'セルの値をループ
For i = 2 To 6
'辞書に登録されていない場合
If A.exists(Cells(i, "A").Value) = False Then
'セルの値を辞書に登録
A.Add Cells(i, "A").Value, Cells(i, "B").Value
End If
Next
'重複しないリストをセルに入力
Range("D2").Resize(UBound(A.keys) + 1) = WorksheetFunction.Transpose(A.keys)
End Sub