配列(Dictionary)

Dictionaryにキーが存在するかチェックする【Existsメソッド】【ExcelVBA】

構文

object.Exists ( key) as Boolean

key   ・・・ 指定した内容がDictionaryのキーに存在してるかチェックする。【必須】 戻り値・・・True→存在する / False→存在しない

Dictionary オブジェクトに指定のキーが(key)存在するかどうかをチェックします。 キーの存在を気にせずDictionaryに追加(Add)していくと、 重複があった場合に、実行時エラーが発生してしまいます。

‘実行時エラー457 ‘このキーは既にこのコレクションの要素に割り当てられています。

Dictionaryにキーが存在するかどうかチェックするサンプルコード

'参照設定 Microsoft Scripting Runtime
Public Sub sample()
    Dim i As Long
    Dim dic As Dictionary
    Set dic = New Dictionary
    
    Dim str As String: str = "444"
    '■Existsメソッドで存在するかどうかチェック
    If dic.Exists(str) = True Then
        '既にキーが存在する為何もしない
    Else
        'キーが存在しない為、dicに追加する
        dic.Add str, "えええ"
    End If
    
    '■単純にエラーを発生させずにDictionaryにキーを追加したい場合
    '■On Error Resume Nextで処理させることもできます。
    On Error Resume Next
    For i = 1 To 10
        dic.Add (Cells(i, 1).Value), i
    Next i

End Sub

注意点

  • 重複を許可する場合は通常の配列で処理をしましょう。
  • キーを追加するだけの場合はOn Error Resume Nextで処理した方がシンプルでしょう。 Existsメソッドを多用するのは、以下のような重複がない状態での集計に役立ちます。 (例) 仕入先別の売上金額を見たい(key:仕入先 item:売上金額) 地域別のDMの反響を見たい(key:顧客に紐づく地域 item:反響数)

関連記事

Dictionaryにキーと要素を追加する【Addメソッド】【ExcelVBA】 DictionaryのExistsが動作しないのはValueで入れてない為【ExcelVBA】

コメント

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