Excel VBAで検索する方法:Findの使い方と見つからない場合

Findを使い検索するVBAを掲載しています。



Homeに戻る > Excel セルのTipsへ

Excel VBAで検索するには Find を使います。

パラメータを指定することで様々な検索が可能です。

探す範囲を指定し下記コードのパラメータを使用するのがもっとも単純かと思います。

LookAt:=xlWholeで完全一致検索、xlPart LookAt:=xlPartで部分検索ができます。

見つかったか見つからなかったかの判定は、Is Nothing で行います。

関連するTipsの「あいまい検索(部分一致)と完全一致の検索方法」も参照してください。



Findメソッドの構文

■expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
  • expression 必ず指定
    Rangeオブジェクト式を指定
  • What 必ず指定
    対象セル範囲内で検索する文字列等のデータ
  • After 省略可能
    指定したセルの次から検索が開始
  • LookIn 省略可能
    検索対象を指定 数式(xlFormulas)、値(xlValues)、コメント(xlComments)
  • LookAt 省略可能
    完全に一致(xlWhole)、一部分でも一致(xlPart)
  • SearchOrder 省略可能
    列方向(xlByColumns)、行方向(xlByRows)
  • SearchDirection 省略可能
    検索の方向を指定 前方検索(xlNext:規定値)、後方検索(xlPrevious)
  • MatchCase 省略可能
    大文字と小文字を区別するには、True を指定
  • MatchByte 省略可能
    半角と全角を区別するには、True を指定
  • SearchFormat 省略可能
    検索の書式を指定



Findを使ったVBA

  • コマンドボタンクリックイベントで検索のプロシージャを呼び出します。
  • 見つかった場合は、コマンドボタンにセル位置を表示します。
  • 見つからなかった場合は、コマンドボタンに「Not Found」と表示します。

Private Sub CommandButton1_Click()
    Dim sr As String
    
    If FindString("bcd", sr) Then
        CommandButton1.Caption = "Find  Cell: " & sr
    Else
        CommandButton1.Caption = "Not Found"
    End If
End Sub

  • 変数のsrowは参照渡し(ByRef)にしているので、見つかった場合はそのセルのアドレスが、見つからなかった場合は空文字になります。
  • LookInで検索対象を値に、LookAtで部分一致に指定しFindを実行します。
  • Findの戻り値をIs Nothingで判定し、見つかればsrowにアドレス、戻り値にTrueをセットします。

'列4から検索
'見つかれば、Trueをお返しsrowにセル位置が入る
Private Function FindString(sv As String, ByRef srow As String) As Boolean
    Dim trange As Range
            
    srow = ""
    FindString = False
    Set trange = ActiveSheet.UsedRange.Columns(4).Find(What:=sv, LookIn:=xlValues, LookAt:=xlPart)
    If Not trange Is Nothing Then
        srow = trange.Address
        FindString = True
    End If
End Function


Excel実行画面

・見つかった場合
見つかった場合

・見つからなかった場合
見つからなかった場合


Homeに戻る > Excel セルのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved