我试图在autofilter之后删除表中的所有可见行但是它给了我那个错误。我试过抬头查看各个地方,因为之前有人询问这个问题,但到目前为止,我找不到任何解决方案的代码
Set rng = wk.Range(wk.Range("A1"), wk.Range("A1").SpecialCells(xlLastCell))
Set tbl = wk.ListObjects.Add(xlSrcRange, rng, , xlYes)
tbl.Range.AutoFilter Field:=16
tbl.Range.AutoFilter Field:=16, Criteria1:="=NR", Operator:=xlOr, Criteria2:="="
此行会导致错误:
wk.Range("$A$1:$AB$" & frow).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
tbl.Range.AutoFilter Field:=16
我也试过这个sub替换了错误的行但是在删除行时它给了我同样的错误
'Call RemoveVisibleRows(wk)
这是同一个
的子程序
Sub RemoveVisibleRows(wDel As Worksheet)
Dim oRow As Range, Drng As Range
Dim myRows As Range
With wDel
Set myRows = Intersect(.Range("A:A").EntireRow, .UsedRange)
If myRows Is Nothing Then Exit Sub
End With
For Each oRow In myRows.Columns(1).Cells
If Not oRow.EntireRow.Hidden And oRow.Row <> 1 Then
If Drng Is Nothing Then
Set Drng = oRow
Else
Set Drng = Union(Drng, oRow)
End If
End If
Next
错误行:
If Not Drng Is Nothing Then Drng.EntireRow.Delete
End Sub
答案 0 :(得分:1)
On Error Resume Next
Set Target = wk.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not Target Is Nothing Then
If Target.Rows > 1 Then
Target.Offset(1).Resize(Target.Rows.Count - 1).EntireRow.Delete
End If
End If