2012-06-07 2 views
3

Итак, у меня есть рабочий лист, в котором я хочу найти значение Range («M» & i) в Range («A: A»). Однако, когда я пытаюсь запустить этот код, он возвращает ошибку: «Run-Time Error '91': Переменная объекта или блока не установлен, когда я нажимаю отладки, он находит ошибку наОбъектная переменная или с блоком не установлена ​​-

SearchIn = Range("A:A") 

I. сделал Google в Интернете и этот сайт (нашел что-то), но я до сих пор не может решить эту проблему. Каждый получил ключ?

Sub Find_Replace() 

Dim i As Integer 
Dim SearchIn As Range 
Dim SearchedObject As Range 
Dim FinalCell As Range 
Dim SumCell As Range 


i = 5 
SearchIn = Range("A1:A740") 
StartSearch = Range("A" & i) 
FinalCell = Range("N" & i) 

Do While i <= 740 

SearchedObject = SearchIn.Find(What:="M" & i, After:=StartSearch, LookIn:=xlValues,   LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 

If SearchedObject.Value = Range("M" & i).Value Then FinalCell = FinalCell.Value + SearchedObject.Offset(0, 5).Value 

Loop 


End Sub 

ответ

5

Я не проверял, но это то, что вы пытаетесь сделать?

При назначении диапазона вы должны использовать SET

Sub Find_Replace() 
    Dim i As Integer 
    Dim SearchIn As Range 
    Dim SearchedObject As Range 
    Dim FinalCell As Range 
    Dim SumCell As Range 

    i = 5 

    Set SearchIn = Range("A1:A740") 
    Set StartSearch = Range("A" & i) 
    Set FinalCell = Range("N" & i) 

    Do While i <= 740 

     Set SearchedObject = SearchIn.Find(What:="M" & i, After:=StartSearch, _ 
     LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _ 
     SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 

     If Not SearchedObject Is Nothing Then 
      If SearchedObject.Value = Range("M" & i).Value Then _ 
      FinalCell.Value = FinalCell.Value + SearchedObject.Offset(0, 5).Value 
     End If 
    Loop 
End Sub 

EDIT: Кроме того, желательно использовать полный путь еще поиска всегда будет в активном листе

Например

Set SearchIn = Sheets("Sheet1").Range("A1:A740") 

Аналогично для других.

+0

Большое спасибо ... Это решило это. :) – speci

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