- ベストアンサー
EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更する方法
- EXCEL VBAでマクロの最後に、Find関数のLookAtの設定を変更する方法について教えてください。
- 通常はセル内容が完全に同一であるものを検索する設定を外して使用していますが、マクロの後にはこの設定が引き継がれてしまいます。
- よりスマートな方法であいまい検索と完全一致検索を切り替える方法があれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あぁ、そういうことでしたか^^; 理解力が乏しくて申し訳ないです。 うろ覚えですが、Findメソッドは自身の処理が走る際に自動設定し保持しますので、再度Findメソッドを使ってやるしか方法はないかと思います。(本当にうろ覚えです^^;) 確かにスマートな形ではないので、それならばLike演算子を使ってやるのはいかがでしょう? Sub Find() Dim c As Object For Each c In Worksheets(1).Range("A1:A10") If c.Value Like "検索文字列" Then 【処理】 End If Next c End Sub みたいにしてやればお望みの処理が実現すると思いますが・・。 それともLike演算子ではダメな理由でもあるのでしょうか?
その他の回答 (3)
- hige_082
- ベストアンサー率50% (379/747)
こうゆう事? 設定変更だけしかしないと思うんだけど Sub 完全一致() Cells.Find lookat:=xlWhole End Sub Sub 曖昧() Cells.Find lookat:=xlPart End Sub
お礼
ありがとうございます。 遅くなりまして申し訳ございません。 教えて頂いた方法ですと、 「引数の数が一致しません」とエラーとなってしまいました。 【環境】 Windows Vista Excel2007
- sykt1217
- ベストアンサー率34% (277/798)
補足ですが、#2はFindメソッドでいう「完全一致」と考えて良いです。 「If c.Value Like "検索文字列" Then」 の「検索文字列」部分前後にアスタリスク(「*」)をつけて「*検索文字列*」としてやれば、「検索文字列を含むセル」がtrueで返り、Findメソッドでいう「曖昧検索」の役割を果たします。
- sykt1217
- ベストアンサー率34% (277/798)
単にマクロがが走る際のロジックの最初の行辺りで Set hoge = .Find(What:="", lookat:=xlWhole) マクロの最後の方で Set hoge = .Find(What:="", lookat:=xlPart) で良い気がしますが・・・。 そういうことではないんですかね?
お礼
ありがとうございます! やはり、最後にあいまい検索を実行しておくって事になりますよね。 実際には、設定を変更するためだけに検索を実行してしまう事になるので、処理は行わず、設定の変更だけで、変えれるものなのかどうかって所で、悩んでおりました。
お礼
ありがとうございます! 遅くなりまして申し訳ございません。 Likeを使用する方法で、解決いたしました。 参考になります。 ありがとうございました!