从筛选的ListObject中删除表行

时间:2016-06-01 10:41:18

标签: excel-vba vba excel

我正在尝试从Table(ListObject)中删除整行,但是我在解决Row方面遇到了问题。 以下代码在未过滤表时仍然有效:

Sub loeschen()

If errorhandling Then On Error GoTo fehlerbehandlung

    ActiveCell.ListObject.ListRows(ActiveCell.Row - ActiveCell.ListObject.HeaderRowRange.Row).Delete

Exit Sub
fehlerbehandlung:
fehlermeldung

End Sub

过滤由用户在Excel中完成,而不是VBA。是否有直接的方法来删除行或我必须不过滤它?如果是这种情况,我该如何以相同的方式再次过滤它(用户不应该注意到任何事情,如果需要,我会应用Application.ScreenUpdating

提前谢谢

2 个答案:

答案 0 :(得分:0)

我明白了。

你必须以这种方式调用行

ActiveCell.ListObject.Range.EntireRow(ActiveCell.Row - ActiveCell.ListObject.HeaderRowRange.Row + 1).Delete

即使已过滤,也会删除右侧行。 (.Select

同样的事情

答案 1 :(得分:0)

如果已经过滤,则可以尝试以下操作:

ActiveSheet.ListObjects([Table_Name]).DataBodyRange.EntireRow.Delete