VBA: .Offset 函数不适用于自动过滤范围

VBA: .Offset function not working for Autofiltered range

我有一个数据集,我希望在其中根据指定的条件过滤和删除所有过滤的行。

我下面的代码运行良好,除了它还会在每次迭代中删除 header 行。我希望 .Offset(1,0) 函数可以解决这个问题,但到目前为止运气不好。

i = 0 'Variável de apoio (contador)
selecao = Array("GRUPO CARREFOUR - VAR", "GRUPO SONAE - VAR", "GRUPO WAL MART - VAR") 'Lista com os Clientes a serem filtrados
    
Do While i < 3:
    With Worksheets(pasta2).range("A1")
        .AutoFilter Field:=5, Criteria1:=selecao(i)
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    
    Worksheets(pasta2).AutoFilterMode = False
    
    i = i + 1

Loop

有人知道如何解决这个问题吗? 提前致谢!

找到 sheet 上的最后一行,然后在 :

上划定您要调用 SpecialCells 的范围
With Worksheets(pasta2)
    Dim lastRow as Long
    lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

    .Range("A1").AutoFilter Field:=5, Criteria1:=selecao(i)

    On Error Resume Next '<~ ignore error if no visible cells
    .Range("A2:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    On Error GoTo 0

    .AutoFilterMode = False
End With