VBAのFINDでなぜか最初のセルがスキップされている問題についての解決策
VBAのFINDでなぜか最初のセルがスキップされる
先日VBAを仕事書いていたところ、find関数でなぜか最初のセルがスキップされてしまいました。
実際に再現してみるとこんな感じです。
Sub main() MsgBox (Range(Cells(1, 2), Cells(10, 2)).Find("テスト").Row) End Sub
本当は1が表示されるはずですが、2になっているので、一行目のテストがスキップされています。
原因
Range.Findメソッドは、引数のAfterが指定されていないと、指定範囲の最初の「次のセルから」検索される仕様だからです。
対処
原因がわかってしまえば、対処は簡単です。
afterを「最後に」指定します。
afterは「指定したセルの次のセルから検索する」引数なので、最後を指定することで、
最後の次の最初が検索対象になります。
実際にやってみる
Sub main() MsgBox (Range(Cells(1, 2), Cells(10, 2)).Find("テスト", after:=Cells(10, 2)).Row) End Sub
まとめ
findを利用するときには、afterの引数を指定しまっしょう。