構文
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】
コメント