FindNext メソッド
Find メソッドで開始された検索を継続します。引数で指定したセルの直後のセルから、同じ検索条件に一致するセルを検索し、見つかったセルを表す Range オブジェクトを返します。
【書式】
object.FindNext ( [ after ] )
引数・戻り値
- object ・・・ 対象となる Range オブジェクトを指定します。
- after ・・・ object で指定したセル範囲内のセルの1つを指定します。このセルの次のセルから検索が開始されます。このセル自体は、指定範囲全体を検索し戻ってくるまでは検索されません。省略すると、対象のセル範囲左上端セルが検索開始点となります。
- 戻り値 ・・・ 検索の結果、条件を満たすセルが見つかったらその先頭のセルを表す Range オブジェクトを返します。見つからなかった場合は、Nothing を返します。
FindPrevious メソッド
Find メソッドで開始された検索を継続します。引数で指定したセルの直前のセルから、同じ検索条件に一致するセルを逆方向に検索し、見つかったセルを表す Range オブジェクトを返します。
【書式】
object.FindPrevious ( [ after ] )
引数・戻り値
- object ・・・ 対象となる Range オブジェクトを指定します。
- after ・・・ object で指定したセル範囲内のセルの1つを指定します。このセルの直前のセルから逆方向に検索が開始されます。このセル自体は、指定範囲全体を検索し戻ってくるまでは検索されません。省略すると、対象のセル範囲左上端セルが検索開始点となります。
- 戻り値 ・・・ 検索の結果、条件を満たすセルが見つかったらその先頭のセルを表す Range オブジェクトを返します。見つからなかった場合は、Nothing を返します。
FindNext メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
Sub Sample_FindNext() Dim myRng As Range Dim firstCell As Range Dim str As String '検索値「スーパー」開始「A1」対象「値」条件「完全一致」縦横方向「行→列」 '方向「後方検索」大文字小文字「区別しない」半角全角「区別しない」書式検索「しない」 Set myRng = Cells.Find("スーパー", _ After:=Range("A1"), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False, _ searchformat:=False) '見つからなかった場合検索を終了します If myRng Is Nothing Then MsgBox "見つかりませんでした" Exit Sub End If Set firstCell = myRng '最初の検索位置に戻るまで検索を繰り返す Do str = str & myRng.Address & vbLf '次を検索 Set myRng = Cells.FindNext(myRng) Loop While firstCell.Address <> myRng.Address '結果表示 MsgBox str End Sub |
実行結果
FindPrevious メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Sub Sample_FindPrevious() Dim myRng As Range Dim firstCell As Range Dim str As String '検索値「*費」開始「A1」対象「値」条件「完全一致」縦横方向「行→列」 '方向「後方検索」大文字小文字「区別しない」半角全角「区別しない」書式検索「しない」 Set myRng = Cells.Find("*費", _ After:=Range("A1"), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False, _ searchformat:=False) '見つからなかった場合検索を終了します If myRng Is Nothing Then MsgBox "見つかりませんでした" Exit Sub End If Set firstCell = myRng '最初の検索位置に戻るまで検索を繰り返す Do str = str & myRng.Address & vbLf '次を検索(検索方向は、FindNext と逆) Set myRng = Cells.FindPrevious(myRng) Loop While firstCell.Address <> myRng.Address '結果表示 MsgBox str End Sub |