2013-11-24 3 views
1

Я использую макрос, чтобы найти несоответствие. Когда обнаружено несоответствие, в ячейке помещается «x». Мой макрос ищет первую ячейку с «x», а затем открывает msgbox, говоря, что существует несоответствие. Если несоответствие найдено, я хочу, чтобы он вышел. Однако, если нет несоответствия я получаю: Ошибка выполнения 91: переменная объекта не установлен (Error 91)Объект VBA требуется ошибка времени выполнения 91

Это код, ошибки:

Range(Selection, Selection.End(xlDown)).Select 

If Selection.Find(What:="x", After:=ActiveCell, LookIn:=xlValues, LookAt:= _ 
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ 
    , SearchFormat:=False).Activate = True Then 


MsgBox ("There is an issue with Validation for this file. Please open the xx_xxxx.csv file and verify that you are entering the correct data.") 
Else: Exit Sub 

End If 

Благодарим Вас за любые предложения

+0

Две ссылки для вас '1' [ИНТЕРЕСНО ЧИТАТЬ] (http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select)' 2' [Использование FIND] (http: // www .siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba /) –

+0

Спасибо, я сделал один раз над ссылками и нашел их очень полезными. Я буду держать их в сумке с инструментами. – user2796515

ответ

2

Вы должны использовать это:

Sub sof20172114Findx() 
    Dim objRange 

    Range(Selection, Selection.End(xlDown)).Select 

    Set objRange = Selection.Find(what:="x", After:=ActiveCell, LookIn:=xlValues _ 
    , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext _ 
    , MatchCase:=False, SearchFormat:=False) 

    If (objRange Is Nothing) Then 
    'MsgBox "No x found." 
    Exit Sub 
    Else 
    MsgBox "There is an issue with Validation for this file. Please open the xx_xxxx.csv file and verify that you are entering the correct data." 
    objRange.Activate 
    End If 
    Set objRange = Nothing 
End Sub 

Если нет х stirng найдено, Sel ection.Find() ничего не возвращает, так как Ничего не имеет метода .Activate, поэтому в исходном коде возникает ошибка.

+0

Безупречный .. Большое спасибо Jacouh! И спасибо за объяснение. Я не был уверен, как обойти код, возвращающий «ничего». Благодаря! – user2796515

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