вы ищете метод Range.PasteSpecial
.
полное выражение:
PasteSpecial( _Paste_ , _Operation_ , _SkipBlanks_ , _Transpose_ )
см. https://docs.microsoft.com/en-us/office/vba/api/excel.range.pastespecial
На данный момент вы вставляете весь лист, что довольно неэффективно.Я предлагаю ознакомиться с Listobject(s)
, чтобы определить вашу таблицу в VBA, а затем использовать Range("YourTable").PasteSpecial _ Paste:=xlPasteValues
, чтобы скопировать только значения из вашей таблицы на новый лист.
вот краткий пример:
Private Sub Sample()
Dim tbl As ListObject
Set tbl =Sheets("YourSheet").Listobjects("YourTable") 'note the "s" in ListObjects
End Sub
Чтобы обратиться к вашему диапазону таблиц, используйте Range("TableName").ListObject
.
См. https://www.dingbatdata.com/2017/11/24/referencing-listobjects-with-vba для получения дополнительной информации
Надеюсь, что это было полезно, хорошего дня!