Dictionary Keyの存在確認
VBAの Dictionary を使うときに必ず押さえておきたいのが「キーが存在するかどうかの確認」です。これをしないと、存在しないキーを参照してエラーになることがあります。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Existsメソッド
dict.Exists("キー")→ True/False を返す。 - 用途:
- キーが存在するか確認してから値を取り出す。
- 新しいキーを追加する前に重複チェック。
- 安全に検索処理を行う。
テンプレ1:キーの存在確認と値取得
Sub Dict_KeyExists()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "A001", "りんご"
dict.Add "A002", "みかん"
Dim key As String: key = "A002"
If dict.Exists(key) Then
MsgBox "キー " & key & " の値は " & dict(key)
Else
MsgBox "キー " & key & " は存在しません"
End If
End Sub
VB- ポイント:
Existsで確認してからdict(key)を使う。- 存在しないキーを直接参照するとエラーになるので注意。
テンプレ2:キーがなければ追加、あれば更新
Sub Dict_AddOrUpdate()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
dict("A001") = "りんご"
Dim key As String: key = "A001"
Dim value As String: value = "りんご(更新済)"
If dict.Exists(key) Then
dict(key) = value ' 更新
Else
dict.Add key, value ' 新規追加
End If
MsgBox dict(key)
End Sub
VB- ポイント:
Existsを使えば「新規追加」と「更新」を分けられる。
テンプレ3:複数キーをチェックして結果を一覧表示
Sub Dict_CheckMultipleKeys()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
dict("C001") = "東京"
dict("C002") = "大阪"
Dim keys As Variant
keys = Array("C001", "C003", "C002")
Dim k As Variant
For Each k In keys
If dict.Exists(k) Then
Debug.Print k & " → " & dict(k)
Else
Debug.Print k & " は存在しません"
End If
Next k
End Sub
VB- 結果:
C001 → 東京 C003 は存在しません C002 → 大阪
テンプレ4:安全な検索関数を作る
Function SafeGet(dict As Object, key As String) As String
If dict.Exists(key) Then
SafeGet = dict(key)
Else
SafeGet = "該当なし"
End If
End Function
Sub Dict_SafeSearch()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
dict("X001") = "商品A"
MsgBox SafeGet(dict, "X001") ' → 商品A
MsgBox SafeGet(dict, "X999") ' → 該当なし
End Sub
VB- ポイント:
- 関数化しておくと、存在確認と値取得をまとめて安全に扱える。
例題で練習
'例1:キー存在確認と値取得
Sub Example1()
Dict_KeyExists
End Sub
'例2:キーがなければ追加、あれば更新
Sub Example2()
Dict_AddOrUpdate
End Sub
'例3:複数キーをチェック
Sub Example3()
Dict_CheckMultipleKeys
End Sub
'例4:安全な検索関数を使う
Sub Example4()
Dict_SafeSearch
End Sub
VB初心者向けポイント
- Existsは必ず使う: 存在しないキーを参照するとエラーになる。
- 追加と更新を分ける:
Existsを使えば安全に処理できる。 - 複数キーも簡単にチェック: ループでまとめて判定可能。
- 関数化すると便利:
SafeGetのようにまとめると再利用しやすい。
👉 この「Keyの存在確認テンプレ」を覚えておけば、Dictionaryを使った検索や集計を 安全かつ高速 に実務へ応用できます。
