※ ChatGPTを利用し、要約された質問です(原文:【EXCEL VBA】Range("A:A").Find(What:="キーワード")の1行目について)
EXCEL VBA:Range("A:A").Find(What:="キーワード")の1行目について
2009/08/20 09:51
このQ&Aのポイント
【EXCEL VBA】Range("A:A").Find(What:="キーワード")の1行目について自分なりに検索してみましたが、解決策を発見できませんでしたので質問させて下さい。
EXCEL VBAのRange関数を使ってセルA列の中から指定のキーワードを検索し、最初に見つかった行の行番号を取得するマクロを作成しています。
しかし、1行目とそれ以外の行に検索対象が存在する場合に、最初に見つかった行の行番号が正しく取得できない問題が発生しています。どのように解決すればよいでしょうか?
【EXCEL VBA】Range("A:A").Find(What:="キーワード")の1行目について
自分なりに検索してみましたが、解決策を発見できませんでしたので質問させて下さい。
Sheet1・・・セルA1~A5の任意の場所に"5"を入力します。
標準モジュールに、以下のコードを記入しました。
Sub test()
Dim i As Integer
i = Sheets("Sheet1").Range("A:A").Find(What:="5").Row
MsgBox i
End Sub
見ての通り、A列全体から、1行目を起点に"5"を上から順に検索し、
最初に見つかった行ナンバーをメッセージボックスに表示するマクロです。
このマクロを実行した際、以下のようなことが起こりました。
"5"を入力するセル / MsgBoxが表示する行番号
(1) 1、2、3行目 / 2
(2) 1、3行目 / 3
(3) 1行目 / 1
(4) 3、4、5行目 / 3
このように、(3)「1行目のみに検索対象が存在する場合」及び
(4)「2行目以降に複数件、検索対象が存在する場合」には
最初に見つかったセルの行番号を正しく返してくれるのですが、
(1)(2)「1行目とそれ以外の行に検索対象が存在する場合」には、
「2行目以降」で最初に見つかったセルの行番号が返ってきます。
これはEXCEL VBAの仕様なのでしょうか?
社内で利用するために作成したツールの一部に上記コードを組み込んでおり、
想定した通りに動いてくれずに困っております。
やりたいことは、A列全体から指定のキーワードが存在するセルを検索し、
1行目も含めて、最初に見つかったセルの行番号を取得することです。
ご助言頂けますよう、よろしくお願いします。
質問の原文を閉じる
質問の原文を表示する
お礼
ありがとうございます、よく分かりました。 今更ですが、VBAヘルプに記載されていましたね・・・ また何かありましたらよろしくお願いします。