アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下の様なVBAで"検索ワード"が入力されているセルを抽出しています。

Set 検索結果 = 検索範囲.CurrentRegion.Find(what:="検索ワード")

検索ワードは"01000"といった感じの5桁の数字(テキストタイプ)です。

7000行くらいの検索範囲の中から、2500回くらいの"検索ワード"を変更しながら検索するものです。

概ねうまくいくのですが、10件くらい、検索結果に実際と異なる値が入ります。
デバッグしていくとうまくいくものは例えば検索ワードが"02020"だった場合、検索結果も"02020"となりますが、うまくいかない場合には、検索ワードが"03000"のときに検索結果に"F003000"といった値が入り、検索結果.rowには全く関係のない"01750"が入力されているセルの行番号が入ったりします。

10個くらいそういう現象が起きる"検索ワード"には全く規則性はなく("03000"とか"10233"とか先頭が"0"のものに限られる、といったこともなく)、検索結果に入る値も"F003000"や"A1023300"など、検索ワードを含んでいるようなのですが、前後につく文字はよくわかりません。

しかも、実際には検索範囲の中に検索ワードは存在し、例えば"03000"の行を検索範囲の一番上に並び替えた場合は、ちゃんとヒットします。

非常に分かりにくい質問で恐縮ですが、何か考えられる要因があるようでしたら、可能性だけでも結構ですので、ご意見いただければと思います。

※"検索結果"とか"検索ワード"とかは実際のVBAの中では半角アルファベットで定義されています。
※ほとんどがうまくいっているので定義の方は問題無いものと思われます。

A 回答 (2件)

LookIn LookAt を設定してやれば


Set 検索結果 = 検索範囲.Find(what:="検索ワード", LookIn:=xlValues, LookAt:=xlWhole)
    • good
    • 1
この回答へのお礼

なるほど!
あらためて調べてみたら、LookInで検索対象をValueに限定し、LookAtで完全一致にする、ということですね。
無事解決できました。
ありがとうございました。

お礼日時:2014/11/18 12:46

>Set 検索結果 = 検索範囲.CurrentRegion.Find(what:="検索ワード")


実際の検索範囲は、検索範囲+その範囲に続くデータのある領域(CurrentRegion)となりますが、それでいいのでしょうか?「検索範囲」に限定で探して欲しいなら、CurrentRegionは不要です。
    • good
    • 0
この回答へのお礼

ネットで拾ってきた構文だったので、ちゃんと理解せずに使用していました。
たしかにCurrentRegionなしでも、自分が意図したことはできました。
勉強になりました。
ありがとうございました。

お礼日時:2014/11/18 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!