★ Findメソッドを使った検索                 サンプルDL

◎ 入力したデータの中から任意の値を検索し、置き換えたりコピーしたり操作します。


  データが膨大になってくると、是非ともほしい機能が検索機能です。
これを可能にしてくれる機能として役立つのがFindメソッドです。今回はこのFindメソッドを利用してデータ列の中から検索したデータを選択する方法にチャレンジしてみましょう。


 こんな感じで前回の住所録のファイルのE列1行目に氏名検索という項目を追加し、テキストボックスをひとつとコマンドボタンをひとつ貼り付けました。

テキストボックスには、「txtkenskau」という名前を付け、
コンボボックスには、「cmbkensaku」という名前を付けました。

今回のコードはこんな感じです。
 

Private Sub cmdkensaku_Click()
Dim 検索氏名 As Variant

 'まず検索用テキストボックスの中に文字の入力があるかどうかをチェックします。
If Not
txtkensaku.Value = Empty Then

 '氏名の列であるB列の中に検索する氏名があるかどうかをチェックします。
  Set 検索氏名 = Columns("B:B").Find(txtkensaku, LookIn:=xlValues)

 '検索結果が発見できれば、そのセルをアクティブにします。
    If Not 検索氏名 Is Nothing Then

        検索氏名.Activate

 '検索結果が発見できなければ、次のメッセージを表示します。
    Else

        MsgBox "検索した氏名は登録されていません。残念!"
        txtkensaku.Value = Empty

    End If


Else


        MsgBox "検索する氏名を入力して下さい。よろしく!"

End If

End Sub


 

 Findメソッドは、指定されたセル範囲の中で、指定した情報を検索し、情報が見つかった最初のセル (Range オブジェクト) を返します。検索の条件にあてはまるセルが見つからなかった場合は、Nothing を返します。ですから上記のように検索氏名が「Nothingでなければ」っていう条件を付けて検索をしていきます。

 それから Columns("B:B")のように必ず、どの場所を検索するかを指定しなければいけません。

  Set 変数 = 範囲.Find(検索情報,LookIn:=xlvalues)
      If Not 変数 Is Nothing Then

         検索に成功したときの処理〜

     End If

こんな感じで覚えておくといろいろ活用できますね。まず最初のセルを検索するので、そのセルから次のセルへ次のセルへと検索を続けていくには、FindNextメソッドを使います。


[前へ][トップ][次へ][サンプルファイルダウンロード]