「エクセル vba find 下から検索」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
セル検索を行うRangeオブジェクトのFindメソッドで、下から上に向かって検索を行うには、どのようなVBA(Visual Basic for Applications)のコードを書けばいいのかを探している方による検索です。
「エクセル マクロ セル 検索 下から上に」
といった検索キーワードも、おそらく同じことを探していらしたのでしょう。
下から上に検索するサンプルマクロ
以下のようなマクロで、下から上方向に検索することができます。
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
上記マクロを実行すると、A列で「北海道」という文字列を下から検索して、見つかった場合はそのセル番地が、見つからなかった場合は「見つかりませんでした。」というメッセージが、メッセージボックスに表示されます。
サンプルマクロで利用しているオブジェクト式
ポイントは、Range.Findの引数・SearchDirectionに、定数・xlPreviousを指定しているところです。
Set rng = Range("A:A").Find( _
What:="北海道", _
SearchDirection:=xlPrevious)
RangeオブジェクトのFindメソッドは、たくさんの引数を指定するように作られていて、引数・SearchDirectionで、
検索方向を指示することができます。
引数・SeachDirectionには、XLSearchDirection列挙に定義されている定数が指定でき、定数・xlPreviousを指定すると、
前方向(列ならば下から上・行ならば右から左)への検索になります。
Range.Findメソッドで検索の起点を指定する引数・Afterを省略した場合、対象セル範囲の左上端のセルが、検索のスタート地点になります。
上記マクロの場合は、
Set rng = Range("A:A").Find( _
と「Range("A:A")」というオブジェクト式で検索対象をA列に指定していますから、A列の左上端のセルであるA1セルが開始点となり、A1セルよりも前(xlPrevious)、すなわち結果的に下から検索が行われるわけです。
- Newer:ListObjectの列・ListColumnを選択する
- Older:少人数ですぐ質問できて良かった
Home » Excel VBA Rangeオブジェクト » セル検索 » Findで下から上へ検索したい