データの検索 Findメソッド

 

構文
Object.Find( What[, After] [, LookIn] [, LookAt] [, SearchOrder] [, SearchDirection] [,MatchCase] [, MatchByte][,SearchFormat])

 

Object.FindNext(After)

 

※ カッコ部分は省略可能です。

 

主要引数の説明

 

イメージ図

 

 

Sub test()
    ’Findメソッド

 

    Dim varSearch As Variant  '検索KEY
    Dim myRange As Range    '検索範囲
    Dim rngResult As Range  '検索結果
    Dim xlCnt As Long     '検索結果行番


    varSearch = Sheets(1).Cells(1, "H")  '検索KEY
    Set myRange = Sheets(1).Range("C:C") '検索範囲
    Set rngResult = myRange.Find(What:=varSearch, LookAt:=xlWhole)
    
    If Not rngResult Is Nothing Then   ’見つかった場合の処理
        xlCnt = rngResult.Row
        Range("A" & xlCnt & ":D" & xlCnt).Interior.Color = vbGreen  ’その行のA~Dを緑色をつける
    End If

End Sub

 
実行結果
 

 

一個目の「商品XY」を見つけて、セルの背景色を緑塗りにしてくれました。条件を満たすすべてのセルを検索したい場合、次のようにコードを一部組み換えが必要です。

 

 

For Nextで条件を満たすすべてのセルを検索する

 

 

Sub test2()
    ’FindNextメソッド2

 

    Dim varSearch As Variant  '検索KEY
    Dim myRange As Range    '検索範囲
    Dim rngResult As Range  '検索結果
    Dim xlCnt As Long     '検索結果行番


    varSearch = Sheets(1).Cells(1, "H")  '検索KEY
    Set myRange = Sheets(1).Range("C:C") '検索範囲
    Set rngResult = myRange.Find(What:=varSearch, LookAt:=xlWhole)
    
    If Not rngResult Is Nothing Then 

        ’ 見つけた1個目結果をtempRngに格納

        Set tempRng = rngResult
        Do

            ’ FindNextで次を探す、見つからないまでループ(Do)をかける

            Set rngResult = myRange.FindNext(rngResult) 
            If rngResult Is Nothing Then Exit Do

 

             ’見つかった場合の処理
            xlCnt = rngResult.Row
            Range("A" & xlCnt & ":D" & xlCnt).Interior.Color = vbGreen  
                    
        Loop Until rngResult.Address = tempRng.Address
    End If

End Sub

 
実行結果

 

 

上記の例のなか、必要に応じて検索条件や、検索範囲を変えれば、実務の作業なかでも活用可能です。Findメソッドは、シートの表示形式依存しているので、日付等の検索について、ちょっとした工夫が必要のようです。その辺について、また時間を作って見ましょう。

 

 

関連記事 

 

VBA セル罫線操作(罫線太さや色)

VBA セル罫線操作(罫線種類)

VBA セル罫線操作(罫線位置)

VBA セルの操作 文字書体設定

VBA セルの操作 もじ色の設定

VBA セルの操作 背景色の設定

VBA セルの操作 値の代入

VBA始める前の準備

VBAとは?

 

― ― ― ― ― ― ― ― ― ― → Excel VBA基礎入門もくじ へ戻る