大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「Dictionary」に既に登録されているかを確認する方法について、ご紹介します。「Dictionary」への登録の確認は、「.Exists」を使えばできます。既に登録されている「キー」を登録してしまうと、エラーとなってしまうので、「.Exists」で登録の有無を確認して登録しましょう。

はじめに

この記事では、「Dictionary」に既に登録されているかを確認する方法について、ご紹介します。

既に登録されているかを確認するには、「.Exists」を使います。

既に登録されている「キー」を登録してしまうとエラーとなりますので、登録されているかを確認して、登録をしましょう。

「.Exists」を使えば、重複しないリストが簡単に作成できるので、実務で使えます。

では、「Dictionary」に既に登録されているかを確認する方法について、解説していきます。

この記事で紹介すること

  • 「Dictionary」に既に登録されているかを確認する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコード

「Dictionary」に登録されているかを確認するVBAコードです。

VBAコードだけ確認したい場合に、ご活用ください。

'既に登録されているかを確認
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

では、実行してみます。

「Exists」で登録されているかを確認

結果は、「登録されています」となりました。

「Dictionary」に登録したイメージは、こんな感じです。

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

では、実行してみます。

登録されていない場合に登録

登録されていない場合に登録

1つ目の「"A"」だけが登録されました。

こんな感じで、既に登録されているかを確認して「Dictionary」に登録する、というように使います。

重複しないセルの値を登録

重複しないセルの値だけを「Dictionary」に登録する、というのをやってみます。

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

重複する値を用意しておきます。

重複する値を用意

重複する値を用意

では、VBAコードを実行してみます。

重複しないキーだけを登録

重複しないキーだけを登録

重複しないキーだけを登録できました。

重複しないリストを作成

「Dictionary」に登録した「キー」を、セルに入力すると、「重複しないリスト」が作成できます。

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

重複する値を用意しておきます。

重複する値を用意

重複する値を用意

では、VBAコードを実行してみます。

重複しないリストを作成

重複しないリストを作成

重複しないリストを作成できました。

「.Exists」はかなり高速で登録の有無を判定してくれるので、うまく使えばVBAを高速化することができます。

おわりに

この記事では、「Dictionary」に既に登録されているかを確認する方法について、ご紹介しました。

既に登録されているかを確認するには、「.Exists」を使います。

既に登録されている「キー」を登録してしまうとエラーとなりますので、登録されているかを確認して、登録をしましょう。

「.Exists」を使えば、重複しないリストが簡単に作成できるので、実務で使えます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す