#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. Я заставил его работать! Спасибо