Excel 如何删除ListObject中的活动表行?

Excel 如何删除ListObject中的活动表行?,excel,vba,Excel,Vba,我有一个userform,用于将新行数据输入到同步到Sharepoint列表的动态表中。我只需要删除表中活动行的VBA代码 我知道此代码用于删除表中的特定行: Selection.ListObject.ListRows(8).删除 但是我需要删除活动行,并且只删除表中的活动行…以下是删除活动行的代码 x = ActiveCell.Row Rows(x).Select Selection.ActiveRow.Delete 这有帮助吗?在表格或网格中工作。您可以使用以下方法获取活动表格行: Sel

我有一个userform,用于将新行数据输入到同步到Sharepoint列表的动态表中。我只需要删除表中活动行的VBA代码

我知道此代码用于删除表中的特定行:

Selection.ListObject.ListRows(8).删除


但是我需要删除活动行,并且只删除表中的活动行…

以下是删除活动行的代码

x = ActiveCell.Row
Rows(x).Select
Selection.ActiveRow.Delete

这有帮助吗?在表格或网格中工作。

您可以使用以下方法获取活动表格行:

Selection.Row-Selection.ListObject.Range.Row

将其与您所拥有的结合起来:

Dim ActiveTableRow尽可能长
ActiveTableRow=Selection.Row-Selection.ListObject.Range.Row
Selection.ListObject.ListRows(ActiveTableRow).Delete

避免使用
Select
Activate
可能是成为更好的VBA开发人员的第一步-

因此,最简单的方法是:

Sub TestMe()

    Cells(ActiveCell.Row, 1).EntireRow.Delete

End Sub
但是,如果您想更进一步,则可以创建一个更通用的函数:

Sub DeleteRow(rowNumber As Long, _
                Optional ws As Worksheet, _
                Optional wb As Workbook)

    If wb Is Nothing Then
        Set wb = ThisWorkbook
    End If

    If ws Is Nothing Then
        Set ws = ActiveSheet
    End If

    ws.Cells(rowNumber, 1).EntireRow.Delete

End Sub

Sub TestMe()

    DeleteRow ActiveCell.Row

End Sub

您如何知道表中哪一行是活动行
ActiveCell.Row
可以告诉您工作表的哪一行是活动的。我知道如何获取活动行,我需要删除表中活动listrow的代码。不是通过选择整行或一系列单元格,我需要删除表格的实际列表行。我知道如何删除活动行。不过,我希望做的是从表中删除列表行。删除活动行只会清除活动行所有单元格中的内容。我需要从表中删除一行,该行必须是活动行。