Аргумент не является дополнительной ошибкой для кода автофильтра - PullRequest
0 голосов
/ 08 июня 2019

Я не очень хорошо разбираюсь в VBA. Я пытаюсь создать макрос, который фильтрует таблицу активного листа на 0 и «N / A». При запуске макроса я получаю ошибку «Аргумент не является обязательным» и ссылается на строку ws.Range.

Я просмотрел чужой код и не уверен, что именно я сделал неправильно.

Sub Remove_Cleared()
'
' Remove_Rows_Based_On_Value
'

'
Dim ws As Worksheet
Dim activeTable As String

    activeTable = ActiveSheet.ListObjects(1).Name

    MsgBox activeTable 'Make sure pulling correct table

    'Set reference to the sheet in the workbook
    Set ws = ActiveSheet
    ws.Activate 'not required but allows user to view sheet if warning message

    'clear any existing filters
    On Error Resume Next
        ws.ShowAllData
    On Error GoTo 0

    '1 Apply Filter
    ws.Range.AutoFilter Field:=8, Criteria1:="0", Operator:=xlOr, Criteria2:="N/A"

    '2 Delete Rows
    Application.DisplayAlerts = False
        ws.Range(activeTable).SpecialCells(xlCellTypeVisible).Delete
    Application.DisplayAlerts = True

    '3 Clear Filter
    On Error Resume Next
        ws.ShowAllData
    On Error GoTo 0

End Sub

К концу макроса я хотел бы, чтобы любая строка, содержащая значение 0 или N / A, была удалена из таблицы активного листа.

1 Ответ

1 голос
/ 08 июня 2019

ws.Range("A1:M300") ... Для объекта Range требуется диапазон.

Поскольку вы уже получаете имя этой таблицы, вы можете использовать его в качестве аргумента:

ws.Range(activeTable).AutoFilter Field:=8, Criteria1:="0", Operator:=xlOr, Criteria2:="N/A"
...