0

マクロを実行しようとすると、次のエラーが表示されます。

Run-time error '1004':
Application-defined or object-defined error

マクロは次のとおりです。

Sub multiFindNReplace()
    Dim myList, myRange
    Set myList = Sheets("Receivable").Range("CN2:CO6") 'two column range where find/replace pairs are
    Set myRange = Sheets("Receivable").Range("A2:BQ1000") 'range to be searched
    For Each cel In myList.Columns(1).Cells
        myRange.Replace What:=cel.Value, Replacement:=cel.Offset(0, 1).Value, _
        LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
    Next cel
End Sub

「デバッグ」をクリックすると、黄色で強調表示されている 3 行は次のとおりです。

myRange.Replace What:=cel.Value, Replacement:=cel.Offset(0, 1).Value, LookAt:=xlWhole, _
MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False

これを修正するにはどうすればよいですか?

4

1 に答える 1

0

myList列1の値が存在しない可能性があると思いますmyRange

存在しないものを置き換えようとする前にこれをテストし、見つからない場合は先に進むことができます。下記参照。(ここでは適用されないように見えるため、引数を削除しました(デフォルトは問題ありません))SearchFormat

Option Explicit

Sub multiFindNReplace()

    Dim myList as Range, myRange as Range, cel as Range

    Set myList = Sheets("Receivable").Range("CN2:CO6") 'two column range where find/replace pairs are
    Set myRange = Sheets("Receivable").Range("A2:BQ1000") 'range to be searched

    For Each cel In myList.Columns(1).Cells

        Dim rngFound as Range
        Set rngFound = myRange.Find(cel.Value, LookAt:=xlWhole, MatchCase:=True)

        If not rngFound is Nothing Then 

            myRange.Replace What:=cel.Value, Replacement:=cel.Offset(0, 1).Value, _
                LookAt:=xlWhole, MatchCase:=True

        End If

    Next cel

End Sub
于 2016-04-01T17:10:20.030 に答える