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

时间:2019-06-18 15:05:39

标签: excel vba

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

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

{{1}}

但是我需要删除表中的活动行和仅活动行...

3 个答案:

答案 0 :(得分:1)

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

Selection.Row - Selection.ListObject.Range.Row

将其与您拥有的内容一起放置:

Dim ActiveTableRow As Long
ActiveTableRow = Selection.Row - Selection.ListObject.Range.Row
Selection.ListObject.ListRows(ActiveTableRow).Delete

答案 1 :(得分:1)

避免使用SelectActivate可能是成为更好的VBA开发人员的第一步-How to avoid using Select in Excel 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

答案 2 :(得分:0)

这是删除活动行的代码。

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

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