Я обнаружил, что цикл выполняется медленно, и предложенное ниже решение цикла не работает с таблицей. Опять же, мой предыдущий вопрос был « Как удалить скрытые (отфильтрованные) строки в таблице? Я пробовал это. Но я думаю, Excel не распознает». SpecialCells (xlCellType Hidden )". Итак, вместо этого я как бы перевернул .SpecialCells (xlCellTypeVisible) logi c, сначала раскрасив отфильтрованные (видимые строки) в таблице в желтый цвет. Затем я отфильтровал по цвету: No Fill. Используется .SpecialCells (xlCellTypeVisible) в удалите эти строки, удалите фильтр и удалите окраску строк, которые были видимыми в начале. В результате скрытые (отфильтрованные) строки удаляются. Эта подпрограмма удаляет скрытые строки очень быстро.
Sub DeleteHiddenRows()
'Keep all visible rows and remove all other hidden rows in a table
'Optimize Code
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'colors visible rows yellow if visible
If ActiveSheet.ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.Count >= 1 Then
ActiveSheet.ListObjects(1).DataBodyRange.Interior.ColorIndex = 6
End If
'reverse filter on non-colored filled cells
ActiveSheet.ListObjects(1).Range.AutoFilter Field:=1, Criteria1:= _
RGB(255, 255, 255), Operator:=xlFilterNoFill
'if data is in a table run this to delete visible - non-colored cells
If ActiveSheet.ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.Count >= 1 Then
ActiveSheet.ListObjects(1).DataBodyRange.EntireRow.Delete
End If
ActiveSheet.ShowAllData
'remove cell color in table data body range
With ActiveSheet.ListObjects(1).DataBodyRange.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Turn back on screen updating and Automatic calculation
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub