今日起こったこと
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セルが答えになります。