2016-07-21 4 views
0

私はprogrammmingで新しいです、私の質問が退屈な場合は申し訳ありません。エラー13単純な検索と置換のVBA

私はセルの範囲内の文字列「MEH」をチェックし、

これまでのところ私のコード「BlahBlah」のためにそれより上のセルを置換するマクロ作成しようとしています:

Sub Findandreplace() 


Dim E As String, Wide As Range, R As Range 

E = "Meh" 

Set Wide = Range("A1:CM300") 

For Each R In Wide 

    If InStr(R.Value, "Meh") > 0 Then 
     R.Offset(-1, 0).Value = "BlahBLah" 

End If 

をそれ私が最初に実行したときに働いていましたが、今はif文にエラータイプ13を与えています。私は何かを鈍らせなければならないが、何を知っているのかわかりません。

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

+0

とコード内で不一致があることを

チェックInstrはStringを期待しますが、Variant(R.Value)を指定します。通常は動作しますが、必ずしもそうではありません。 CStr(R.Value)で常に文字列にすることができます。 – Mikegrann

+0

行1のターゲット文字列を見つけた場合、このコードは機能しません。コードは、存在しない行0に置換文字列を書き込もうとしますが、エラーが発生します。検索範囲は "A2:CM300"にする必要がありますか? – barrowc

答えて

2

いいえあなたはDim何も持っていません。ところで変数名はひどいです。あなたは、セルの値自体が誤りであるとき、タイプミスがエラーと一致し得る

(#N/Aのように、#1 DIV/0!)IsError

Sub test() 
Dim E As String, Wide As Range, R As Range 

E = "Meh" 

Set Wide = Range("A1:CM300") 

For Each R In Wide 

    '/ Check if the cell contains an error. 
    If Not IsError(R) Then 
     If InStr(R.Value, E) > 0 Then 
      R.Offset(-1, 0).Value = "BlahBLah" 
     End If 
    End If 
Next 


End Sub