2012-02-08 4 views
0

Мой вопрос касается ошибки времени выполнения 91 в VBA для Excel. Я сделал некоторые поиски безрезультатно. Мой код ниже. Я заметил раздел, вызывающий ошибку. Почему это происходит, и как я могу это исправить и двигаться дальше?VBA в функции ошибки времени выполнения 91

Sub RemoveFooterRows(theFile) 
    Dim found As Range 
    Dim aggregateRow 

    ''Error is from section below 
    found = isItRow = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
     ("Summary", Range("A1"), xlValues, xlPart, xlByRows, xlNext, False, , False) 
    ''Error is from section above 

    MsgBox ("val is " & found.Row) 

End Sub 

ответ

3
Sub RemoveFooterRows(theFile) 

    Dim found As Range 

    Set found = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
     ("Summary", Range("A1"), xlValues, xlPart, xlByRows, xlNext, False, , False) 
    MsgBox ("val is " & found.Row) 

End Sub 

Вам нужно "Установить" ключевое слово, чтобы присвоить значение.

Также не уверен, что вы хотите «= isItRow =», но вы должны сделать это в двух утверждениях вместо того, чтобы пытаться их уложить.

Также aggregateRow не используется и не назначен тип.

+3

Также стоит добавить проверку 'If Not found Is Nothing Then ...' в случае, если значение не было найдено. –

+0

Хорошо, это работает, я не понимал, что у меня есть двойное задание. Но, как мне получить строку, когда я добавляю .Row в конце, я получаю ту же ошибку. Как назначить строку найденной переменной? – Brian

+0

Добавить .row to what? Это уже в строке MsgBox и возвращает мне штраф. – Jesse

0

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

Dim Rw As Long 

On Error Resume Next 
Rw = Workbooks(theFile).Worksheets(1).Columns(1).Find _ 
    ("Summary", LookIn:=xlValues, LookAt:=xlPart).Row 

If Rw > 0 Then 
    MsgBox "The row is " & Rw 
Else 
    MsgBox "Not found" 
End If 
+0

В чем разница между вашим чеком и «If Not found Is Nothing Then» – Brian

+0

Используя ваш код и закомментировав On Error Resume дальше, я получаю ту же ошибку. Я использовал эту находку, как я ее написал. Я знаю, что значение находится в столбце A, почему существует ошибка? – Brian

+0

'On Error Resume Next' есть, потому что если' .Find' ничего не находит, то '.Row' генерирует ошибку. – mischab1

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