ゆとり社会人の読書ノート&エクセルVBA

素人が公法を中心に幅広く読書をします&エクセルVBA奮闘記です。

findメソッドの検索順序

今日起こったこと

findメソッドを使って、条件式にエラーが出ているセルを検索して、一定の処理をするマクロを書きました。

ところが、findメソッドを使いこなせていなかったため、検索に抜け漏れが生じてしまいました。

誤解していたこと

原因は、findメソッドの検索順序が、オブジェクトの左上のセルの次のセル→オブジェクトの最後のセル→オブジェクトの左上のセルであることを知らなかったことです。

てっきり、左上のセル→オブジェクトの最後のセルだと思っていました。

上級者からしたら当たり前なのかもしれませんが、私はここで大きく躓いてしましました。

もしかしたら上級者は、引数のAfterをうまく設定することでこの現象を逃れているのかもしれません。

私のような状況に陥っている人の気づきになれば幸いです。

実際のコードで見てみる

ワークシートに画像のような文字列が記載されているときに、下記のマクロを実行すると、どうなるでしょうか。


Sub test()

    Dim rng As Range
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set rng = ws.Range("B2:B6").Find("太郎")
    
    Debug.Print rng.Address

End Sub

ここまでの記事を読んでいただいた方ならばお分かりの通り、答えは「B4」セルです。

左上の次のセル(B3セル)から検索していくので、2回目に登場するB4セルが答えになります。