【VBA】列に特定の値が存在するか確認する

背景

・Find関数は使用したくない。時間が掛かるため
・For文で1行ずつの確認はしたくない。行数が多いと時間が掛かるため
・for文を使用せずに1列に設定されているデータを取得しDictionaryに設定する。
 DictionaryのExistsメソッドにより、特定の値が存在するか確認する

前提

シート[サンプルシート]のB列に以下が設定されている

サンプルプログラム

'変数の宣言を必須
Option Explicit

Sub Sample()
    
    Const TARGET_SHEET_NAME As String = "サンプルシート"
    Const TARGET_COLUMN As Integer = 2
    Const START_ROW As Integer = 3
    
    Dim endRow As Double
    Dim arrayData As Variant
    Dim data As Variant
    Dim dicDate As Object
    
    '最終行を取得
    endRow = Cells(START_ROW, TARGET_COLUMN).End(xlDown).Row
    
    '1列分のデータを取得
    With Worksheets(TARGET_SHEET_NAME)
        arrayData = Range(.Cells(START_ROW, TARGET_COLUMN), _
                         .Cells(endRow, TARGET_COLUMN))
    End With
    
    'DictionaryのKeyに設定。Valueには空文字を設定
    Set dicDate = CreateObject("Scripting.Dictionary")
    For Each data In arrayData
        If Not dicDate.Exists(data) Then
            dicDate.Add data, ""
        End If
    Next
    
    '特定の値の存在確認
    If dicDate.Exists("0000006") Then
        MsgBox "0000006が存在しました"
    End If
End Sub

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