VBA в функции поиска во время выполнения ошибки 91 - PullRequest
0 голосов
/ 08 февраля 2012

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

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 ]

4 голосов
/ 08 февраля 2012
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

Вам необходимо ключевое слово "Set", чтобы присвоить значение.

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

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

0 голосов
/ 19 декабря 2018
Sub search()

    Sheets("MyShelf").Activate

    Dim dd() As String

    aa = Cells(Rows.Count, 1).End(xlUp).Row

    ReDim dd(aa)

    i = 1

    Range(Cells(2, 1), Cells(aa, 1)).Select

    Set bb = Selection

    For Each cc In bb

        dd(i) = cc.Value

        i = i + 1

    Next

    Sheets(50).Activate

    ff = 0

        For i = 1 To aa - 1

        ee = Range("D:D").Find(What:=dd(i), LookAt:=xlPart, LookIn:=xlValues, SearchOrder:=xlByColumns)

        On Error Resume Next

        If Len(ee) > 1 Then

        ff = ff + 1

        End If

    Next

    MsgBox ff


End Sub
0 голосов
/ 08 февраля 2012

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

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
...