Findメソッドとは何か?
Findメソッドは、Excel VBAで使用できる検索機能の一つです。
このメソッドを使用すると、指定した範囲内で指定した値を検索し、そのセルの位置を返すことができます。
検索条件を細かく指定することができ、見つかった最初のセルだけでなく、全ての一致するセルを取得することもできます。
Findメソッドの使い方
FindメソッドはRangeオブジェクトに対して使用します。以下はFindメソッドの基本的な使い方です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Dim rng As Range Set rng = Range("A1:D10") '検索範囲を設定 Dim searchValue As String searchValue = "apple" '検索する値を指定 Dim result As Range Set result = rng.Find(searchValue) '検索を実行 If Not result Is Nothing Then MsgBox "見つかったセルのアドレスは" & result.Address & "です。" Else MsgBox "見つかりませんでした。" End If |
このコードでは、A1:D10の範囲内で「apple」を検索し、最初に見つかったセルのアドレスをメッセージボックスで表示しています。
検索条件の指定
Findメソッドでは、検索条件を指定することができます。以下は検索条件を指定する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Dim rng As Range Set rng = Range("A1:D10") Dim searchValue As String searchValue = "apple" Dim searchRange As Range Set searchRange = rng.Columns(2) '検索対象をA列からC列に限定 Dim searchLookIn As XlFindLookIn searchLookIn = xlValues '値を検索対象にする Dim searchMatchCase As Boolean searchMatchCase = False '大文字小文字を区別しない Dim result As Range Set result = searchRange.Find(searchValue, , searchLookIn, searchMatchCase) If Not result Is Nothing Then MsgBox "見つかったセルのアドレスは" & result.Address & "です。" Else MsgBox "見つかりませんでした。" End If |
このコードでは、A列からC列の範囲内で「apple」を検索し、大文字小文字を区別せずに最初に見つかったセルのアドレスを表示しています。
複数の一致するセルを取得する
Findメソッドでは、全ての一致するセルを取得することもできます。以下は全ての一致するセルを取得る例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Dim rng As Range Set rng = Range("A1:D10") Dim searchValue As String searchValue = "apple" Dim searchRange As Range Set searchRange = rng.Columns(2) Dim searchLookIn As XlFindLookIn searchLookIn = xlValues Dim searchMatchCase As Boolean searchMatchCase = False Dim result As Range Set result = searchRange.Find(searchValue, , searchLookIn, searchMatchCase) Dim firstResultAddress As String firstResultAddress = result.Address '最初に見つかったセルのアドレスを記憶 Dim allResults As String allResults = "" '全ての一致するセルのアドレスを格納する変数を初期化 Do Until result Is Nothing allResults = allResults & result.Address & vbCrLf 'アドレスを追加 Set result = searchRange.FindNext(result) '次のセルを検索 If result.Address = firstResultAddress Then Exit Do '最初に戻ったら終了 Loop If allResults = "" Then MsgBox "見つかりませんでした。" Else MsgBox "見つかったセルのアドレスは" & vbCrLf & allResults & "です。" End If |
このコードでは、A列からC列の範囲内で「apple」を検索し、全ての一致するセルのアドレスを取得しています。
注意点
Findメソッドを使用する際には、以下の点に注意が必要です。
- 検索範囲は必ず設定する必要があります。範囲を指定しないと、エラーが発生します。
- 検索対象のセルの値が数式の場合、検索条件に数式として指定する必要があります。
- 検索対象のセルに書式設定がされている場合、検索条件に書式を指定することもできます。
- Findメソッドは大文字小文字を区別します。大文字小文字を区別しない場合は、searchMatchCase引数にFalseを指定します。
以上がExcel VBAのFindメソッドについての解説です。検索条件を細かく指定することで、効率的な検索が可能になります。
サンプルコード
条件に合うセルをハイライトする
このコードでは、指定した条件に合うセルをハイライトする方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub HighlightCells() Dim rng As Range Set rng = Range("A1:D10") Dim searchValue As String searchValue = "apple" Dim searchRange As Range Set searchRange = rng.Columns(2) Dim searchLookIn As XlFindLookIn searchLookIn = xlValues Dim searchMatchCase As Boolean searchMatchCase = False Dim result As Range Set result = searchRange.Find(searchValue, , searchLookIn, searchMatchCase) If Not result Is Nothing Then Dim firstResultAddress As String firstResultAddress = result.Address '最初に見つかったセルのアドレスを記憶 Do result.Interior.ColorIndex = 6 'ハイライト Set result = searchRange.FindNext(result) '次のセルを検索 Loop Until result.Address = firstResultAddress '最初に戻ったら終了 End If End Sub |
このコードは、ExcelのVBAで指定した範囲内で特定の値を検索し、その値が存在する場合にはそのセルをハイライト(背景色を変える)するコードです。
具体的には、範囲「A1:D10」の中で「apple」という文字列を持つセルを検索し、そのセルが存在する場合には背景色を黄色(ColorIndex=6)に変えます。また、同じ条件に合致するセルが複数ある場合には、全てのセルをハイライトします。
コメント