背景
・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