Как использовать операторы If-Else для фильтрации таблицы? - PullRequest
1 голос
/ 17 января 2020

Приведенный ниже код фильтрует 4-й столбец Table1 на наличие пустых ячеек, а затем удаляет эти строки, если они пустые.

Sub DeleteJob()
    Dim tbl As ListObject
    Dim ws As Worksheet

    'Set reference to the sheet and Table.
    Set ws = Sheets("Line Item Summary")
    Set tbl = ws.ListObjects("Table1")
    ws.Activate

    'Clear any existing filters
    tbl.AutoFilter.ShowAllData

    '1. Apply Filter
    tbl.Range.AutoFilter Field:=4, Criteria1:=""

    '2. Delete Rows
    Application.DisplayAlerts = False

    tbl.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete

    Application.DisplayAlerts = True

    '3. Clear Filter
    tbl.AutoFilter.ShowAllData
End Sub

Когда код запускается один раз, все строки с пробелами удаляются, а в 4-м столбце остаются ячейки со значениями, но появляется ошибка, так как больше нет пустых ячеек для поиска /удалять. Я думал об использовании оператора «If / Else», чтобы при наличии пробелов соответствующая строка удалялась, иначе ничего не делайте, если все ячейки в столбце имеют значение. Я не знаю, как изменить код ниже, чтобы приспособиться к этому.

'2. Delete Rows
Application.DisplayAlerts = False

tbl.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete

Application.DisplayAlerts = True

1 Ответ

3 голосов
/ 17 января 2020

Один вариант: сначала используйте Application.CountBlank, прежде чем даже фильтровать.

If Application.CountBlank(tbl.ListColumns(4).DataBodyRange) = 0 Then Exit Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...