Как удалить строку активной таблицы в ListObject? - PullRequest
2 голосов
/ 18 июня 2019

У меня есть пользовательская форма для ввода новых строк данных в динамическую таблицу, которая синхронизируется со списком Sharepoint.Мне просто нужен код VBA для удаления только активной строки в таблице.

Я знаю, что этот код предназначен для удаления конкретной строки в таблице:

Selection.ListObject.ListRows(8).Delete

Но мне нужно удалить активную строку и только активную строку втаблица ...

Ответы [ 3 ]

1 голос
/ 18 июня 2019

Вы можете получить строку активной таблицы, используя:

Selection.Row - Selection.ListObject.Range.Row

Собираем вместе с тем, что у вас есть:

Dim ActiveTableRow As Long
ActiveTableRow = Selection.Row - Selection.ListObject.Range.Row
Selection.ListObject.ListRows(ActiveTableRow).Delete
1 голос
/ 18 июня 2019

Отказ от использования Select и Activate, вероятно, является первым шагом к тому, чтобы стать лучшим разработчиком VBA - Как избежать использования Select в 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
0 голосов
/ 18 июня 2019

Вот код для удаления активной строки.

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

Это поможет? Работает в таблице или сетке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...