Если вам нужно освободить место для копирования диапазона rngins
, вы должны выполнить следующие действия:
Dim aboveR As Long
aboveR = rngins.Cells(1, 1).row
sh.Rows(aboveR & ":" & aboveR + rngtocopy.Rows.Count - 1).Insert xlDown
Этот фрагмент кода будет вставлять в диапазон rngins
столько строк, сколько и rngtocopy
Диапазон имеет.
Если вам нужно вставить только несколько строк диапазона, второй параметр должен заменить rngtocopy.Rows.Count
на указанное c количество строк. И затем, ячейка вставки должна быть определена путем добавления этого числа к существующему значению aboveR
:
Dim pasteCell As Range
Set pasteCell = sh.Range("A" & aboveR + rngtocopy.Rows.Count)
rngtocopy.Copy pasteCell
И чтобы ваш код работал так, как вы хотели, попробуйте это:
rngtocopy.Copy
rngins.Cells(1, 1).Insert Shift:=xlDown
Application.CutCopyMode = False 'Clear clipboard
Когда вы пытаетесь вставить строки, и в буфере обмена что-то есть, содержимое буфера обмена вставляется ...