Excel VBA 逆引き集 | Keyの存在確認

Excel VBA
スポンサーリンク

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を使った検索や集計を 安全かつ高速 に実務へ応用できます。

タイトルとURLをコピーしました