ous">

小さな在庫管理

在庫管理導入からシステム作成まで詳細解説!

VBA 検索処理 Find メソッドについて詳細解説! [VBA関連解説#14]

この記事では、VBAでの検索処理に使用する、Findメソッドの使用方法を解説します。

基本構文から、引数の設定方法などの記述方法を解説します。


VBA関連解説

Excelの検索機能

Findメソッドは、Excelの検索機能を再現したものともいえます。
Excelの検索機能はホームタブの編集にある、検索と選択ボタンで始めます。

プルダウンから、検索を選択すると、検索と置換ダイアログボックスが表示されます。

オプションボタンをクリックすると、詳細な検索条件が設定できます。

VBAでは、これらをの検索条件が、Findメソッドで再現できます。

 

Find メソッドの構文

VBAでは、セルの検索にFindメソッドがよく使用されます。

基本構文

Findメソッドは、セル範囲内で指定の文字列を検索します。

Find 構文

Range("A:A").Find ( What, After, LookIn, LookAt, SearchOrder, SerchDirection, MatchCase, MatchByte, SearchFormat )

引数の設定は下表のようになります。

Find 引数

 

使用方法

使用方法については、下記サンプルを実際に処理した結果とともに解説します。

抽出サンプル

Find 例

Sub Find_BASE()
Dim A As Range

Set A = Range("A:A").Find(What:="山田", LookAt:=xlWhole)

If A Is Nothing Then
    MsgBox "存在しません"
Else
    MsgBox "存在します"
End If

End Sub

検索結果

上記コードは、完全一致で検索したFindメソッドの戻り値を変数に格納し、検索結果を判定する、最もシンプルな例です。

戻り値はRangeオブジェクトで返されるので、格納する変数もオブジェクト型で指定します。

一致するデータが見つからなかった場合、戻り値はNothingを返します。
そこで、戻り値がNothingかどうかで、検索結果を判定します。

 

検索結果の加工例

検索結果のコピー1

Find COPY

Sub Find_COPY1()
Dim A As Range

Set A = Range("A:A").Find(What:="山田", LookAt:=xlWhole)

If A Is Nothing Then
    MsgBox "存在しません"
Else
    A.Offset(0, 1).Copy Range("D2")
End If

End Sub

検索結果

上記コードは、A列を山田で検索し、検索結果の右セルの点数のみを、D2セルに出力する例です。
Offset を使用するところがポイントです。

検索結果のコピー2

Find COPY

Sub Find_COPY2()
Dim A As Range

Set A = Range("A:A").Find(What:="山田", LookAt:=xlWhole)

If A Is Nothing Then
    MsgBox "存在しません"
Else
    A.Resize(1,2).Copy Range("D2")
End If

End Sub

検索結果

上記コードは、A列を山田で検索し、検索結果と右セルを合わせて、D2セルを基準に出力する例です。
Resize を使用するところがポイントです。

 

注意点等

引数が保存される

引数 LookIn、LookAt、SearchOrder、MatchByte の設定は、Findメソッドを使用するたびに保存されます。
Findメソッドを使用する時に、上記の引数を省略すると、前回保存された設定が有効となります。
これを回避するには、上記の引数は明示的に設定するといいですが、これらの引数設定を変更することがない場合は、毎回省略するといいでしょう。

その他の検索方法

検索処理としてFindメソッドを解説しましたが、その他にも検索する方法はあります。
例えば、For Nextステートメントや、Vlookup関数・Match関数など様々な検索方法がありますので、適宜使用してみましょう。

 

検索・抽出・並び替え

VBAでExcelシートをデータベース的に使用するときには、検索・抽出・並び替えの各機能の使用が必要となってきます。
この記事では、検索機能に使用する Find メソッドについて解説しました。

下記の記事では、AutoFilter メソッドを使用した抽出機能について解説しています。

下記の記事では、Sort メソッド・Sort オブジェクトを使用した並べ替え機能について解説しています。

 

概要解説に戻る