2017-07-20 15 views
1

特定のテキストのセルの位置に基づいて範囲を取得する必要があります。次のコード行はそれだけです。Range.Findが常に機能しない

Sub test() 
Dim rng As Range 
Dim ws2 As Worksheet 
Set ws2 = Sheets("Sheet2") 
Set rng = ws2.Cells.Find("asd", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Offset(3) 
rng.Select 
End Sub 

問題時々いくつかの未知の理由で、Range.Findだけで動作するように望んでいないということで、アウトできます実行時エラー91 私は、ブックを再起動すると、時々、それはまだ動作しません。場合によっては修正されることもあります。 これがなぜ起こるのかわかりません。私はエラーを再現しようとすることはできません。 私が探しているテキストのセルがマージされたセルであることが原因と思われます。これが理由だろうか? それはなぜ時にはそれがうまくいくのか、時にはうまくいかない理由を説明していません。

私は使用するかどうかをテストし、それが動作するかどうかを確認するだけです。

質問:毎回Range.Findが確実に動作するようにするにはどうすればよいですか? (テキストのセルは常に存在すると仮定します)

答えて

2

範囲がNothingであるかどうかをテストできます。範囲が何もないときは、何も見つからなかったことを意味します。そして、何も選択することはできません。

Sub test() 
    Dim rng As Range 
    Dim ws2 As Worksheet 
    Set ws2 = Sheets("Sheet2") 
    Set rng = ws2.Cells.Find("asd", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 
    If Not rng Is Nothing Then 
    rng.Offset(3).Select 
    else 
    MsgBox("Nothing Found") 
    End if 
    End Sub 
+0

@SJRありがとうございます。それを忘れてしまった。 – Moosli

+0

はい@Moosliしかし、なぜそれは何ですか?何もない理由はありません。だから私は混乱している。 – idktho

+0

一致するものが見つからない場合は何も表示されません。あなたが試みることができるのは、 "ws2.cells(1,1).select"で最初のセルを選択することです。この時点からseachingから始まります。 – Moosli

関連する問題