Excel VBA - код внезапно получит ошибку времени выполнения 91 (автофильтр) - PullRequest
0 голосов
/ 01 октября 2018

У меня есть код, который будет искать и копировать с одного листа на другой с помощью автофилера.Я включил свой код ниже.Моя проблема здесь в том, что ранее (2 недели назад) код работал просто отлично, как и предполагалось, я тестировал код так много раз и ошибок нет.Внезапно, когда я запускаю код, возникает ошибка времени выполнения 91, и, похоже, ошибка в этой строке:

.AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")

Я пробовал .AutoFilter=False, обработку ошибок, а также активацию листа.Но я все еще получаю ту же ошибку во время выполнения.Может ли кто-нибудь помочь мне понять, что не так с моим кодом?любая помощь очень ценится.

Sub search()
    Dim ws1, ws2 As Worksheet
    Set ws1 = Worksheets("Master")
    Set ws2 = Worksheets("Fruit")
    'Worksheets("Fruit").Activate

    With ws1
        '.AutoFilterMode = False
        .Range("B7").AutoFilter
        .Range("B7").AutoFilter field:=17, Criteria1:="Rotten"
        'On Error Resume Next
        .AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")
        '.AutoFilterMode = False
    End With

    With ws2.Range("B10:Y1400").Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

    MsgBox ("Search done.")
End Sub

1 Ответ

0 голосов
/ 01 октября 2018

Попробуйте это.

  1. Замените field:=17 на field:=1.Ваш диапазон представляет собой один столбец, поэтому поле должно быть 1.

  2. Также замените строку .AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")

на эту

Dim rng As Range

Set rng = .AutoFilter.Range.Offset(1, 0)

'~~> Checking if there is something that was filtered
If Not rng Is Nothing Then
    rng.Copy Destination:=ws2.Range("B10")
Else
    MsgBox "Nothing found"
End If

Что теперь происходит?

Dim ws1, ws2 As Worksheet

Только ws2 объявляется как Worksheet.ws1 объявляется как Variant.Измените это на

Dim ws1 As Worksheet, ws2 As Worksheet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...