Удаление строк рассмотрено тут, а со вставкой всё сложнее. Если вставлять нужно более чем по 1 строке, то тут без циклов никак и этот вариант отлично работает.
Вопрос в работе функции PRDX_RowsInsert: если выделить (передать диапазон) ячейки, которые не стоят рядом, то всё гут, но, если выделить рядом стоящие ячейки (неважно, по одной через Ctrl или одним выделением), то вставляется так, как, если было бы выделено сплошным диапазоном (над первой ячейкой выделения вставляется столько строк, сколько выделено). Если делать руками (выделить по одной и нажать "Вставить строки на лист"), то всё гут, но макрорекордер записывает Selection.EntireRow.Insert если мы тоже самое запишем в коде, то для умной таблицы не сработает (будет ошибка).
КОДЫ
Код
Sub t()
Dim rng As Range
Set rng = Selection
If PRDX_RowsInsert(rng) Then MsgBox "OK"
'If PRDX_RowsDelete(rng) Then MsgBox "OK"
End Sub
' вставка строк без цикла (только по ОДНОЙ строке)
Public Function PRDX_RowsInsert(rng As Range) As Boolean
Dim tbl As ListObject, rngTmp As Range
On Error Resume Next: Set tbl = ActiveWorkbook.Worksheets(rng.Parent.Name).ListObjects(1): Err.Clear: On Error GoTo 0
If Not tbl Is Nothing Then Intersect(rng.EntireRow, tbl.DataBodyRange).Rows.Insert Else rng.EntireRow.Delete
PRDX_RowsInsert = True
End Function
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Я так понял, либо всем пофиг, либо решения нет и поэтому придумал следующее: получаю из выделенного диапазона отдельные ячейки (либо Offset(-1,0), если нужно вставлять ПОД выделенными) и прошу пользователя нажать клавишу "Вставить строки на лист". Работает отлично и бонусом идёт штатная возможность отмены.
Разумеется, можно было не париться и просто делать обратным циклом, но на больших объёмах "штатная" вставка по 1 строке должна выиграть.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄