はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
1.Findメソッドを使ってセルを検索する
セルに入力されている文字や数字を検索するには、RangeオブジェクトのFindメソッドを使います。このメソッドの機能は、{Ctrl}キー+{F}キーで行うExcelのセル検索とほぼ同じです。
Findメソッドとは
 Findメソッドは、ワークシート内のセルに入力された内容を検索するメソッドです。Findメソッドを実行するときは、全ての引数を指定するのが基本です。Findメソッドの引数は前回検索したときの設定内容がそのまま使用されるため、引数を省略すると期待通りの結果が得られないことがあるためです。

図 1-1Findメソッドの使い方
Rangeオブジェクト.Find(引数).メソッドプロパティ
セルを検索します。
Rangeオブジェクト
 ワークシート内の検索範囲を記述します。Cellsを記述するとワークシート全体が対象、ワークシートの一部分を検索するときはRangeプロパティで範囲を記述します。

引数
 指定できる引数の種類は、下の表の通りです。位置指定で記述する場合は表の順序通りに、名前指定で記述する場合は「What:="A"」のように記述します。

メソッド/プロパティ
 見つかったセルを操作するときに記述します。Rangeオブジェクトのメソッドやプロパティが使用できます。

戻り値
 見つかったとき …見つかったセルのRangeオブジェクトが返ります。
 見つからないとき…Nothingが返ります。

【記述例】
「VBA」という単語が含まれるセルを検索します。
Cells.Find(What:="VBA" _
         , After:=ActiveCell _
         , LookIn:=xlValues _
         , LookAt:=xlPart _
         , SearchOrder:=xlByColumns _
         , SearchDirection:=xlNext _
         , MatchCase:=False _
         , MatchByte:=False _
         , SearchFormat:=False).Activate

表 1-1Findメソッドの引数
引数名内容使用方法

What
必須
検索内容文字や数値など、検索する内容を指定します。
この引数のみ必須です。
After検索開始位置検索を開始するセルを、Rangeオブジェクトで指定します。省略時は、検索範囲の左上のセルです。ActiveCellを指定すると、次にヒットするセルを検索します。
検索範囲を限定するときにAfterを指定するときは、検索範囲内のセルを指定しなくてはなりません。
LookIn検索部分セルのどの部分で検索するかの設定です。XlFindLookIn列挙の内容で指定します。

 xlValues …セルに入力されている値
 xlFormulas…セルに入力されている数式
 xlComments…セルのコメント
LookAt比較方法部分一致と完全に一致のどちらで検索するかの設定です。XlLookAt列挙の内容で指定します。

 xlPart …部分一致
 xlWhole…完全一致
SearchOrder行列方向行と列のどちらに向かって検索するかの設定です。XlSearchOrder列挙の内容で指定します。引数名は順序的な意味(Order)ですが、検索ボックスの「検索方向」に相当します。

 xlByRows  …行方向
 xlByColumns…列方向
SearchDirection検索順序手前と後ろのどちらに向かって検索するかの設定です。XlSearchDirection列挙の内容で指定します。引数名は方向的な意味(Direction)ですが、検索ボックスの「方向」ではありません。

 xlNext  …後ろ(次)を検索
 xlPrevious…手前を検察
MatchCase大文字/小文字の区別アルファベットの大文字と小文字を区別するかどうかの設定です。省略した場合は、Falseが有効になります。

 True …区別する
 False…区別しない既定値
MatchByte全角/全角の区別全角文字と半角文字を区別するかどうかの設定です。

 True …区別する
 False…区別しない
SearchFormat書式検索Application.FindFormatに設定された内容を元に、書式の検索を行うかどうかの設定です。

 True …書式検索を行う
 False…書式検索を行わない

図 1-2検索と置換ダイアログボックスとFindメソッドの対応図
検索と置換ダイアログボックスとFindメソッドとその引数の対応図
Findメソッドの使用例
 次のリストは、セルの内容を検索するプログラムの作成例です。7〜15行目で、Findメソッドによるセル検索の処理を行っています。Findメソッドの引数は、全ての種類を指定しました。検索の内容は、リスト下の図と同じです。

リスト 1-1セルの内容を検索するプログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Sheet1
Option Explicit

Sub CellsFindSample()

    Dim oRange As Range

    Set oRange = Cells.Find(What:="阿武隈" _
                          , After:=ActiveCell _
                          , LookIn:=xlFormulas _
                          , LookAt:=xlPart _
                          , SearchOrder:=xlByRows _
                          , SearchDirection:=xlNext _
                          , MatchCase:=False _
                          , MatchByte:=False _
                          , SearchFormat:=False)

    oRange.Activate

End Sub

図 1-3検索の内容


◆実行結果
 サンプルプログラム「CellsFindSample」を実行すると、表示内容に「阿武隈」という単語が含まれるセルを検索し、見つかったセルにカーソルを移動します。
 Sheet1の表の中には、「阿武隈」という文字が含まれるが複数あります。プログラムを何度も実行すると、そのつど新しいセルを見つけ出してカーソルを移動します。

図 1-4サンプルプログラムの実行例
セルが見つかるとカーソルが移動します。何度も実行すると、そのつどカーソルを移動します。


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved