Ваша проблема в том, что вы используете одну ячейку в качестве диапазона.
Когда вы .Offset
используете один диапазон ячеек, используйте `xlCelTypeVisible.EntireRow.Delete
Excel выбирает каждую ячейку на листе и удаляет их.
Вы действительно должны уточнить свой диапазон с помощью правильно определенного объекта диапазона. например, * +1008 *
Dim ws As Worksheet, lRow As Long, rng As Range
Set ws = Worksheets("Sheet1")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = ws.Range("A1:AB" & lRow)
Но если вы хотите использовать B1
в качестве rng
, вы можете заменить свою строку, rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Select
этой строкой ...
rng.Range(Cells(2, 2), Cells(rng.Rows.Count, 2)).SpecialCells(xlCellTypeVisible).EntireRow.Delete