5 эффективных способов копирования и вставки значений в Excel VBA

Копирование и вставка значений в Excel VBA — распространенная задача, которую можно выполнить несколькими способами. В этой статье мы рассмотрим пять эффективных методов с примерами кода, которые помогут вам скопировать весь лист и вставить только значения. Следуя этим методам, вы сможете оптимизировать код VBA и повысить производительность приложений Excel.

Метод 1: копирование и вставка значений с помощью метода PasteSpecial

Sub CopyPasteValues_Method1()
    Sheets("Sheet1").UsedRange.Copy
    Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues
End Sub

Метод 2. Копирование и вставка значений с использованием свойства Value

Sub CopyPasteValues_Method2()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    targetSheet.UsedRange.Value = sourceSheet.UsedRange.Value
End Sub

Метод 3. Копирование и вставка значений путем их непосредственного присвоения

Sub CopyPasteValues_Method3()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    targetSheet.Range("A1").Resize(sourceSheet.UsedRange.Rows.Count, _
        sourceSheet.UsedRange.Columns.Count).Value = _
        sourceSheet.UsedRange.Value
End Sub

Метод 4. Копирование и вставка значений с использованием массивов

Sub CopyPasteValues_Method4()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim sourceData As Variant
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    sourceData = sourceSheet.UsedRange.Value
    targetSheet.Range("A1").Resize(UBound(sourceData, 1), UBound(sourceData, 2)).Value = sourceData
End Sub

Метод 5. Копирование и вставка значений с помощью метода автофильтра

Sub CopyPasteValues_Method5()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    sourceSheet.UsedRange.AutoFilter
    sourceSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy
    targetSheet.Range("A1").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    sourceSheet.AutoFilterMode = False
End Sub

Копирование и вставка значений в Excel VBA — рутинная задача, которую можно выполнить различными методами. В этой статье мы рассмотрели пять эффективных методов копирования всего листа и вставки только значений. Реализовав эти методы, вы сможете оптимизировать код VBA и повысить производительность приложений Excel.