2014-12-04 3 views
0

Я провел часы расчесывания через интернет-ресурсы и не могу найти ответ на вопрос, почему это возвращает ошибку:Несовпадения ошибка 13 в Excel VBA 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 

возвращает массив 2D Variant с границами (от 1 до 499, от 1 до 1), а не строку.

Вы не можете сделать это так, как вы пытаетесь: вместо этого вы можете перебирать каждую пару значений и запускать замену для каждой пары.

Непроверенные:

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

Смежные вопросы