Excelのセルを検索する
<< エクセルVBAのセル操作一覧 :前の記事
こちらでは、RangeオブジェクトのActivateメソッドを利用して、Excelのセルを検索する方法について解説しています。
エクセルVBAではセルの検索にFindメソッドとFindNextメソッドが容易されています。Findメソッドは指定したセル範囲から引数に指定した文字列を含むセルを探し、そのセルのRangeオブジェクトを返します。FindNextメソッドは、Findメソッドで検索した条件を使って引き続き検索するメソッドです。Findメソッドと同様に該当するセルが見つかった場合、そのセルのRangeオブジェクトを返します。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
目次
はじめに
こちらでは、Activateメソッドを利用したExcelの指定したセルをアクティブにする方法について解説します。今回は、RangeオブジェクトのActivateメソッドを利用しますが、ActivateメソッドはRangeオブジェクト以外でも利用されますので、どのオブジェクトで利用できるかも確認してください。
利用するメソッドについて
今回利用するメソッドは以下になります。- Activateメソッド
Activateメソッドとは
RangeオブジェクトのActivateメソッドは指定されたセルをアクティブにします。Activateメソッドには引数はありません。
Excelのセルを検索するサンプルコード
今回のVBAコードはExcelの指定したセルを検索するマクロになります。
Sub sample()
Dim myRng As range
Dim myAdrs As String
Set myRng = Cells.Find("VBA")
myAdrs = myRng.Address
Do
MsgBox "検索中"
Set myRng = Cells.FindNext(myRng)
Loop Until myRng.Address = myAdrs
End Sub
実行結果
「C3」セルを検索します。

解説
sampleプロシージャのSubステートメントに引数は設定されていません。Findメソッドで文字列「VBA」をセル全体から検索し、見つかったセルをRangeオブジェクト変数「myRng」に格納します。続きの検索は同様にmyRngを使ってFindNextメソッドを使用しますが、FindNextメソッドは指定した範囲の検索が一通り終わるとその範囲の最初に再度戻って検索を行う仕様になっています。
よって最初に見つけたセルの番地を変数「myAdrs」に代入しておけば、Do~Untilステートメントで最初に見つけたセルが再度出てくるまでループ処理を繰り返します。FindNextメソッドに渡す引数は「myRng」になりますので注意してください。最後はEndステートメントを利用してsampleプロシージャを終了させます。
FindメソッドとFindNextメソッドは引数の設定によって、多様な検索を行うことができます。例えば、引数「LookAt」では完全一致か部分一致か指定できます。また、引数「MatchCase」では大文字と小文字を区別するかどうかを指定できます。引数は他にも種類がありますので、より複雑な検索が可能となります。
まとめ
今回は、rangeオブジェクトのActivateメソッドを利用して、Excelの指定したセルをアクティブにする方法について解説しました。今回は引数がないメソッドでしたのですぐに理解できたかと思います。次回は、エクセルVBAでExcelのセルを選択する方法について解説します。
エクセルVBAのセル操作一覧
次の記事: エクセルVBAでExcelのセルを選択する >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。