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

EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。

EXCELの検索機能において、通常は、オプションの「セル内容が完全に同一であるものを検索する」のチェックを外して使用しています。

あるマクロにおいて、Find関数のLookAtの値を「xlWhole」(完全一致)で使用しています。
この「LookAt」の値は、通常の手動での検索にも設定が引き継がれるため、このマクロの後に、検索機能を使用するとオプションの「セル内容が完全に同一であるものを検索する」はチェックされた状態になっています。

つまり、通常時はあいまい検索、マクロ時は完全一致検索を行いたいと思っており、マクロの最後で、あいまい検索に設定を変更しておきたいのですが、そういった指定は可能なのでしょうか。

ごり押しですが、最後に、あいまい検索で適当な検索を行っておくという事も考えましたが、もう少しスマートな方法があるのか、ご存知の方がいらっしゃればと思い質問させていただきました。

よろしくお願いします。

A 回答 (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演算子ではダメな理由でもあるのでしょうか?
    • good
    • 1
この回答へのお礼

ありがとうございます!
遅くなりまして申し訳ございません。

Likeを使用する方法で、解決いたしました。

参考になります。

ありがとうございました!

お礼日時:2009/06/10 11:58

こうゆう事?


設定変更だけしかしないと思うんだけど

Sub 完全一致()
Cells.Find lookat:=xlWhole
End Sub

Sub 曖昧()
Cells.Find lookat:=xlPart
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます。
遅くなりまして申し訳ございません。

教えて頂いた方法ですと、
「引数の数が一致しません」とエラーとなってしまいました。

【環境】
Windows Vista
Excel2007

お礼日時:2009/06/10 11:56

補足ですが、#2はFindメソッドでいう「完全一致」と考えて良いです。



「If c.Value Like "検索文字列" Then」
の「検索文字列」部分前後にアスタリスク(「*」)をつけて「*検索文字列*」としてやれば、「検索文字列を含むセル」がtrueで返り、Findメソッドでいう「曖昧検索」の役割を果たします。
    • good
    • 0

単にマクロがが走る際のロジックの最初の行辺りで



Set hoge = .Find(What:="", lookat:=xlWhole)

マクロの最後の方で

Set hoge = .Find(What:="", lookat:=xlPart)

で良い気がしますが・・・。

そういうことではないんですかね?
    • good
    • 2
この回答へのお礼

ありがとうございます!

やはり、最後にあいまい検索を実行しておくって事になりますよね。

実際には、設定を変更するためだけに検索を実行してしまう事になるので、処理は行わず、設定の変更だけで、変えれるものなのかどうかって所で、悩んでおりました。

お礼日時:2009/05/21 09:05

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