Copy Paste Values only( xlPasteValues ) Copy Paste Values only( xlPasteValues ) vba vba

Copy Paste Values only( xlPasteValues )


If you are wanting to just copy the whole column, you can simplify the code a lot by doing something like this:

Sub CopyCol()    Sheets("Sheet1").Columns(1).Copy    Sheets("Sheet2").Columns(2).PasteSpecial xlPasteValuesEnd Sub

Or

Sub CopyCol()    Sheets("Sheet1").Columns("A").Copy    Sheets("Sheet2").Columns("B").PasteSpecial xlPasteValuesEnd Sub

Or if you want to keep the loop

Public Sub CopyrangeA()    Dim firstrowDB As Long, lastrow As Long    Dim arr1, arr2, i As Integer    firstrowDB = 1    arr1 = Array("BJ", "BK")    arr2 = Array("A", "B")    For i = LBound(arr1) To UBound(arr1)        Sheets("Sheet1").Columns(arr1(i)).Copy        Sheets("Sheet2").Columns(arr2(i)).PasteSpecial xlPasteValues    Next    Application.CutCopyMode = FalseEnd Sub


since you only want values copied, you can pass the values of arr1 directly to arr2 and avoid copy/paste. code inside the loop:

      Sheets("SheetB").Range(arr2(i) & firstrowDB).Resize(lastrow, 1).Value = .Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Value


Personally, I would shorten it a touch too if all you need is the columns:

For i = LBound(arr1) To UBound(arr1)    Sheets("SheetA").Columns(arr1(i)).Copy    Sheets("SheetB").Columns(arr2(i)).PasteSpecial xlPasteValues    Application.CutCopyMode = FalseNext

as from this code snippet, there isnt much point in lastrow or firstrowDB