Home » ExcelVBA Rangeオブジェクト » セル検索 » Findで下から上へ検索したい

Findで下から上へ検索したい

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

Findで下から上へ検索したい

「エクセル vba find 下から検索」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

セル検索を行うRangeオブジェクトのFindメソッドで、下から上に向かって検索を行うには、どのようなVBA(Visual Basic for Applications)のコードを書けばいいのかを探している方による検索です。

「エクセル マクロ セル 検索 下から上に」
といった検索キーワードも、おそらく同じことを探していらしたのでしょう。

[スポンサードリンク]

下から上に検索するサンプルマクロ

以下のようなマクロで、下から上方向に検索することができます。

Sub 下から検索する()

 Dim rng As Range

 Set rng = Range("A:A").Find( _
   What:="北海道", _
   SearchDirection:=xlPrevious)

 If rng Is Nothing Then
  MsgBox "見つかりませんでした。"
 Else
  MsgBox rng.Address(False, False)
 End If

End Sub

上記マクロを実行すると、A列で「北海道」という文字列を下から検索して、見つかった場合はそのセル番地が、見つからなかった場合は「見つかりませんでした。」というメッセージが、メッセージボックスに表示されます。

サンプルマクロで利用しているオブジェクト式

ポイントは、Range.Findの引数・SearchDirectionに、定数・xlPreviousを指定しているところです。
 Set rng = Range("A:A").Find( _
   What:="北海道", _
   SearchDirection:=xlPrevious)

RangeオブジェクトのFindメソッドは、たくさんの引数を指定するように作られていて、引数・SearchDirectionで、

Findで下から上へ検索したい

検索方向を指示することができます。

引数・SeachDirectionには、XLSearchDirection列挙に定義されている定数が指定でき、定数・xlPreviousを指定すると、

Findで下から上へ検索したい

前方向(列ならば下から上・行ならば右から左)への検索になります。

Range.Findメソッドで検索の起点を指定する引数・Afterを省略した場合、対象セル範囲の左上端のセルが、検索のスタート地点になります。

上記マクロの場合は、
 Set rng = Range("A:A").Find( _
と「Range("A:A")」というオブジェクト式で検索対象をA列に指定していますから、A列の左上端のセルであるA1セルが開始点となり、A1セルよりも前(xlPrevious)、すなわち結果的に下から検索が行われるわけです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル検索 » Findで下から上へ検索したい

「セル検索」の記事一覧

検索


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

.