Excel VBA | Find を使った最終セルの詳しい説明(パラメータの意味)

VBA
スポンサーリンク

要点まとめ

Excel VBAのFindメソッドは「検索と置換」の検索機能をVBAから使えるものです。最終セルを取得する際にも応用できます。重要なのは、各パラメータの意味を理解して正しく指定することです。


Findメソッドの基本構文

Range.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
VB

パラメータの意味(初心者向けにかみ砕いて)

  • What(必須)
    • 検索する文字列や数値。例: "東京"
    • 最終セルを探す場合は "*"(ワイルドカード)を使うことが多い。
  • After(省略可)
    • 検索開始位置。指定したセルの「次」から検索が始まる。
    • 省略すると範囲の左上セルの次から検索するため、最初のセルが検索対象外になる点に注意 インストラクターのネタ帳
  • LookIn
    • どの情報を検索するか。
      • xlValues → 値
      • xlFormulas → 数式
      • xlComments → コメント
    • 通常は xlValues を使う。
  • LookAt
    • 一致条件。
      • xlWhole → 完全一致
      • xlPart → 部分一致
    • 例: "東京"と完全一致か、 "東京都"の中に含まれるか。
  • SearchOrder
    • 検索の方向。
      • xlByRows → 行ごとに検索
      • xlByColumns → 列ごとに検索
    • 最終行を探すなら xlByRows が多い。
  • SearchDirection
    • 検索の進む方向。
      • xlNext → 前方(通常)
      • xlPrevious → 後方(逆方向)
    • 最終セルを探すときは xlPrevious を使うと便利。
  • MatchCase
    • 大文字小文字を区別するか。
      • True → 区別する
      • False → 区別しない
  • MatchByte
    • 半角と全角を区別するか。日本語環境で利用。
  • SearchFormat
    • 書式条件で検索するか。通常は使わない。

最終セルを取得する例

最終行を探す

Sub 最終行をFindで取得()
    Dim rng As Range
    ' A列の最後に入力されているセルを検索
    Set rng = Range("A:A").Find(What:="*", _
                                LookIn:=xlValues, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlPrevious)
    MsgBox "最終行は " & rng.Row & " 行目です"
End Sub
VB
  • What:="*" → 何か入っているセルを検索
  • SearchDirection:=xlPrevious → 後ろから検索するので「最後のセル」が見つかる

最終列を探す

Sub 最終列をFindで取得()
    Dim rng As Range
    ' 1行目の最後に入力されているセルを検索
    Set rng = Rows(1).Find(What:="*", _
                           LookIn:=xlValues, _
                           SearchOrder:=xlByColumns, _
                           SearchDirection:=xlPrevious)
    MsgBox "最終列は " & rng.Column & " 列目です"
End Sub
VB

注意点

  • 省略したパラメータは「前回の検索条件」が残るため、意図しない結果になることがある。必ず明示的に指定するのが安全。
  • Afterの指定ミスで最初のセルが検索対象外になることがあるので、最終セル検索では「範囲の最後のセル」を指定するのが定番。

まとめ

Findを使えば「最後の行・列」を柔軟に取得できます。特に What:="*" + SearchDirection:=xlPrevious の組み合わせが最終セル取得の定番です。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました