Home » ExcelVBA Rangeオブジェクト » セル検索 » Find・FindNextで検索して行を選択する

Find・FindNextで検索して行を選択する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

RangeオブジェクトのFindメソッドを使って、行を選択するExcelマクロをご紹介しています。
ご紹介済みのこのマクロでは、検索で見つかった最初の行が選択されるだけです。

検索を行って見つかった全ての行を選択したい、というニーズも実務ではあるでしょう。
そんなマクロをご紹介します。

[スポンサードリンク]

文字列を検索してみつかった行全体をすべて選択するサンプルマクロ

以下のマクロを実行すると、A列で「北海道」という文字列を検索して、見つかった行がすべて選択されます。

Sub 北海道という文字列を検索して行をすべて選択する()

 Dim fnd As Range
 Dim fnd_all As Range ' 見つかったすべてのセル
 Dim adr As String ' 最初に見つかったセルのAddress

 Set fnd = Range("A:A").Find("北海道")
 If fnd Is Nothing Then
  MsgBox "見つかりませんでした。"
  Exit Sub
 Else
  Set fnd_all = fnd
  adr = fnd.Address
 End If

 Do
  Set fnd = Cells.FindNext(After:=fnd)
  If fnd.Address = adr Then
   Exit Do
  Else
    Set fnd_all = Union(fnd_all, fnd)
  End If
 Loop

 fnd_all.EntireRow.Select

End Sub

サンプルマクロの解説

RangeオブジェクトのFindメソッドとFindNextメソッドを使って、検索したセルを全て選択するマクロをご紹介しています。

上記のマクロも構造はほとんど同じです。
違うのは最後の選択を行う行です。

ご紹介済みのセルを全て選択するマクロでは
  fnd_all.Select
となっていたのが、
  fnd_all.EntireRow.Select
となっています。

行全体を取得する、RangeオブジェクトのEnterRowプロパティを使っています。

Rangeオブジェクトには、Rangeオブジェクトを返すプロパティがたくさん用意されていて、このような使い方をできるのが(オブジェクト式やオブジェクト構造がわかっていないと難しいと感じるかもしれませんが)とても便利なところです。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル検索 » Find・FindNextで検索して行を選択する

「セル検索」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.