2014-12-04 114 views
0

我已经花了几个小时通过网上资源梳理,并不能找到一个答案,为什么这会返回一个错误:不匹配在Excel VBA错误13 2010

Sub temp() 

Dim Findtext As String 
Dim Replacetext As String 
Findtext = Sheets("Sheet2").Range("B2:B500").Value 
Replacetext = Sheets("Sheet2").Range("A2:A500").Value 
Sheets("Sheet1").Select 
Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 

End Sub 

每次我碰到一个“运行时错误‘13’ :类型不匹配“消息。

我只是试图用一张纸上的数字值替换另一张纸上有相应数值的相邻列中的数值。

回答

0
Sheets("Sheet2").Range("B2:B500").Value 

返回带有界限(1到499,1到1)的2D Variant数组,而不是一个字符串。

您无法按照您尝试的方式进行此操作:您可以循环查看每对值并对每对值执行一次替换。

未经测试:

Sub temp() 

Dim Findtext As String 
Dim Replacetext As String 
Dim rw As Range 

    For Each rw In Sheets("Sheet2").Range("A2:B500").Rows 

     Findtext = rw.Cells(2).Value 
     Replacetext = rw.Cells(1).Value 

     If Len(Findtext) > 0 Then 

      Sheets("Sheet1").Cells.Replace What:=Findtext, Replacement:=Replacetext, _ 
         LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
         SearchFormat:=False, ReplaceFormat:=False 

     End If 
    Next rw 

End Sub 
+0

非常感谢你。这工作! – james987654321 2014-12-04 01:11:11