プロが教えるわが家の防犯対策術!

VBAで検索した文字が見つかったら処理をしますが、
見つからなかったらエラーになります。
見つからなかった場合に何もしない様に変えていただけないでしょうか?

Sheets("Sheet3").Range("A1") = _
Sheets("Sheet1").Cells.Find("あああ").Offset(1, 0)

A 回答 (3件)

NO1です。


前回答では見つかなかったらマクロ終了としましたが、当該マクロを続行させる場合の例です。

Set wk = Sheets("Sheet1").Cells.Find("あああ")
If Not wk Is Nothing Then
Sheets("Sheet3").Range("A1") = wk.Offset(1, 0)
End If
~以下継続
    • good
    • 6
この回答へのお礼

ありがとうございます、バッチリです。
解決しました。

お礼日時:2011/09/03 14:43

こんなところへ質問する前に、Googleででも「Find VBA」などで照会すれば、沢山記事が出ますので勉強してからにすべきでしょう。


http://officetanaka.net/excel/vba/cell/cell11.htm
VBAをやるならマクロの記録、WEB照会、手元のVBA書籍の記述参照はまず心がけなけばならないでしょう。
>Findメソッドは、引数Whatに指定した検索値が見つかった場合は、見つかったセル(Rangeオブジェクト)を返します。ただし、見つからなかった場合はNothingという特別な状態を返します
これを検知します。
ーー
・外に該当が複数ありえる場合は、FindNextを使う
・該当の最後まで検索されて後は、最初の該当分のセルに戻る。
ことを体験すること。後者の検知で検索は終わることになります。
>Sheets("Sheet1").Cells.Find("あああ").Offset(1, 0)
Offset利用は、まず該当のデータがあるセルをとらえて、その後次の行に記述したほうが良いと思う。
初心者の場合は余り複数のことを複合化した記述はしないほうが良いでしょう。
    • good
    • 2

一例です。



Set wk = Sheets("Sheet1").Cells.Find("あああ")
If wk Is Nothing Then Exit Sub
Sheets("Sheet3").Range("A1") = wk.Offset(1, 0)
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A