source

값만 복사 붙여넣기( xlPasteValues )

manysource 2023. 4. 15. 09:02

값만 복사 붙여넣기( xlPasteValues )

시트 A의 전체 열을 시트 B에 복사하려고 합니다. 시트 A의 열에는 공식으로 구성된 값이 있습니다.xlPasteValues만 사용하여 SheetA 열 값을 복사하고 있습니다.그러나 다른 시트 B에 값을 붙여 넣는 것은 아닙니다.시트B의 열이 비어 있습니다.마이 VBA 코드

    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)
        With Sheets("SheetA")
           lastrow = Application.Max(3, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row)
           .Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Copy
           Sheets("SheetB").Range(arr2(i) & firstrowDB).PasteSpecial xlPasteValues
        End With
    Next
    Application.CutCopyMode = False

End Sub

열 전체를 복사하고 싶은 경우 다음과 같은 작업을 수행하여 코드를 크게 간소화할 수 있습니다.

Sub CopyCol()

    Sheets("Sheet1").Columns(1).Copy

    Sheets("Sheet2").Columns(2).PasteSpecial xlPasteValues

End Sub

또는

Sub CopyCol()

    Sheets("Sheet1").Columns("A").Copy

    Sheets("Sheet2").Columns("B").PasteSpecial xlPasteValues

End Sub

또는 루프를 유지하려면

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 = False

End Sub

값만 복사하고 싶기 때문에 다음 값을 전달할 수 있습니다.arr1에 직접arr2복사/복사를 피할 수 있습니다.

내부 코드For루프, 내부With블록, 후lastrow계산:

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

개인적으로는 컬럼만 있으면 조금 짧게 할 수 있습니다.

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

이 코드 스니펫에서 알 수 있듯이, 에는 큰 의미가 없다.lastrow또는firstrowDB

다음을 사용할 수 있습니다.

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

이것도 사용하셔도 됩니다.

Sub CopyPaste()
Sheet1.Range("A:A").Copy

Sheet2.Activate
col = 1
Do Until Sheet2.Cells(1, col) = ""
    col = col + 1
Loop

Sheet2.Cells(1, col).PasteSpecial xlPasteValues
End Sub

나도 이 문제를 겪어본 적이 있는데 답을 찾은 것 같아.

매크로를 실행하기 위해 버튼을 사용하는 경우, 매크로가 다른 매크로에 링크되어 있을 가능성이 높으며, 현재 작업 중인 매크로의 버전으로 저장해도 인식하지 못할 수도 있습니다.버튼을 사용하여 매크로를 실행하는 대신 VBA(F5)에서 직접 매크로를 실행해 보십시오.내 생각엔 그게 효과가 있을 것 같아.버튼의 매크로를 실제로 실행할 매크로에 재할당하기만 하면 됩니다.

selection=values.values

이것은 매우 빠른 방법으로 일을 처리한다.

언급URL : https://stackoverflow.com/questions/23937262/copy-paste-values-only-xlpastevalues