Удалите отфильтрованные строки в таблице, а не всю строку

#vba

#превосходить #vba

Вопрос:

Как удалить только строки таблицы, а не все строки рабочего листа, когда моя таблица отфильтрована?

 Dim TradeTable As Excel.ListObject Set TradeTable = Sheets("Pre Trade").ListObjects("PreTradeTable")  On Error Resume Next  With TradeTable  TradeTable.Select  .Range.AutoFilter Field:=.ListColumns("Ask Spread").Index, Criteria1:=""  Call .DataBodyRange.SpecialCells(xlCellTypeVisible).Select  Selection.Delete  .Range.AutoFilter  End With  On Error GoTo 0  

Комментарии:

1. @BigBen: Предложенный ответ удаляет целые строки. DisplayAlerts используется для подавления диалогового окна, в котором вас спрашивают, хотите ли вы удалить целые строки.

Ответ №1:

Удаление Строк Таблицы (Не Целых Строк)

 Option Explicit  Sub DeleteTableRows()    Dim wb As Workbook: Set wb = ThisWorkbook    Dim TradeTable As ListObject  Set TradeTable = wb.Worksheets("Pre Trade").ListObjects("PreTradeTable")    With TradeTable    .AutoFilter.ShowAllData ' clear possible previous filter    .Range.AutoFilter Field:=.ListColumns("Ask Spread").Index, Criteria1:=""    Dim vrg As Range ' Visible Cells Range  On Error Resume Next ' prevent error if no filtered rows  Set vrg = .DataBodyRange.SpecialCells(xlCellTypeVisible)  On Error GoTo 0    .AutoFilter.ShowAllData ' this does the trick    If Not vrg Is Nothing Then  vrg.Delete Shift:=xlShiftUp  End If    End With  End Sub  

Комментарии:

1. Говорит переменная параметра или с не установленным блоком

2. Я заставил его работать! Спасибо