엑셀 VBA에서 Paste 메서드는 복사한 내용을 특정 위치에 붙여넣을 때 사용됩니다.
보통 Copy 메서드와 함께 사용되며, 전체 내용 또는 특정 요소(값, 서식 등)만 붙여넣을 수 있습니다.
1. 기본 문법
Range("붙여넣을 위치").PasteSpecial Paste:=붙여넣을 유형
|
- PasteSpecial을 사용하면 특정 요소(값, 서식 등)만 붙여넣기 가능
- Paste는 기본적으로 전체 내용(값 + 서식 + 수식) 붙여넣기
- 복사 후 Application.CutCopyMode = False를 추가하면 복사 모드 해제
2. 전체 복사 및 붙여넣기
📌 A1:A5를 복사하여 B1에 붙여넣기
Sub 전체_복사_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False ' 복사 모드 해제
End Sub
|
📌 A1:A5의 전체 내용을 B1부터 붙여넣기 (값, 서식, 수식 포함)
📌 Application.CutCopyMode = False → 복사 모드 해제
3. 특정 요소만 붙여넣기 (PasteSpecial)
붙여넣기 유형
|
설명
|
xlPasteAll
|
모든 요소(값 + 서식 + 수식) 붙여넣기
|
xlPasteValues
|
값만 붙여넣기 (수식 제거)
|
xlPasteFormulas
|
수식만 붙여넣기 (서식 유지)
|
xlPasteFormats
|
서식만 붙여넣기
|
xlPasteComments
|
메모(댓글)만 붙여넣기
|
xlPasteValidation
|
데이터 유효성 검사 규칙만 붙여넣기
|
xlPasteColumnWidths
|
열 너비만 붙여넣기
|
xlPasteSpecialOperations
|
연산 적용 붙여넣기 (예: 더하기, 빼기 등)
|
📌 값만 붙여넣기 (xlPasteValues)
Sub 값만_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
|
📌 A1:A5의 값을 B1부터 붙여넣기 (서식 및 수식 제거됨)
📌 수식만 붙여넣기 (xlPasteFormulas)
Sub 수식만_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub
|
📌 A1:A5의 수식만 B1부터 붙여넣기 (서식은 유지)
📌 서식만 붙여넣기 (xlPasteFormats)
Sub 서식만_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub
|
📌 A1:A5의 서식만 B1부터 붙여넣기 (값과 수식은 변경되지 않음)
📌 열 너비만 붙여넣기 (xlPasteColumnWidths)
Sub 열너비_붙여넣기()
Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteColumnWidths
Application.CutCopyMode = False
End Sub
|
📌 A열의 열 너비를 B열에 적용 (내용은 변경되지 않음)
📌 메모(댓글)만 붙여넣기 (xlPasteComments)
Sub 메모만_붙여넣기()
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteComments
Application.CutCopyMode = False
End Sub
|
📌 A1의 메모(댓글)만 B1에 붙여넣기
4. 연산 적용하여 붙여넣기
연산 유형
|
설명
|
xlPasteSpecialOperationAdd
|
기존 값에 더하기
|
xlPasteSpecialOperationSubtract
|
기존 값에서 빼기
|
xlPasteSpecialOperationMultiply
|
기존 값에 곱하기
|
xlPasteSpecialOperationDivide
|
기존 값에 나누기
|
📌 기존 값에 더하기 (xlPasteSpecialOperationAdd)
Sub 더하기_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd
Application.CutCopyMode = False
End Sub
|
📌 A1:A5 값을 B1:B5에 더하기 (B1:B5가 기존 값이 있는 상태에서 계산됨)
📌 기존 값에서 빼기 (xlPasteSpecialOperationSubtract)
Sub 빼기_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationSubtract
Application.CutCopyMode = False
End Sub
|
📌 A1:A5 값을 B1:B5에서 빼기
📌 기존 값에 곱하기 (xlPasteSpecialOperationMultiply)
Sub 곱하기_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationMultiply
Application.CutCopyMode = False
End Sub
|
📌 A1:A5 값을 B1:B5에 곱하기
📌 기존 값에 나누기 (xlPasteSpecialOperationDivide)
Sub 나누기_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationDivide
Application.CutCopyMode = False
End Sub
|
📌 A1:A5 값을 B1:B5에서 나누기
5. 붙여넣기 없이 직접 복사 (값 입력)
Sub 직접_값_복사()
Range("B1:B5").Value = Range("A1:A5").Value
End Sub
|
📌 A1:A5 값을 B1:B5로 직접 복사 (서식 및 수식 제외, 값만 복사됨)
📝 정리
기능
|
VBA 코드
|
전체 붙여넣기
|
Range("B1").PasteSpecial Paste:=xlPasteAll
|
값만 붙여넣기
|
Range("B1").PasteSpecial Paste:=xlPasteValues
|
수식만 붙여넣기
|
Range("B1").PasteSpecial Paste:=xlPasteFormulas
|
서식만 붙여넣기
|
Range("B1").PasteSpecial Paste:=xlPasteFormats
|
열 너비만 붙여넣기
|
Columns("B").PasteSpecial Paste:=xlPasteColumnWidths
|
메모(댓글)만 붙여넣기
|
Range("B1").PasteSpecial Paste:=xlPasteComments
|
기존 값에 더하기
|
Operation:=xlPasteSpecialOperationAdd
|
기존 값에서 빼기
|
Operation:=xlPasteSpecialOperationSubtract
|
기존 값에 곱하기
|
Operation:=xlPasteSpecialOperationMultiply
|
기존 값에 나누기
|
Operation:=xlPasteSpecialOperationDivide
|
직접 값 복사
|
Range("B1:B5").Value = Range("A1:A5").Value
|
🔥 VBA의 Paste와 PasteSpecial을 활용하면 데이터를 유연하게 붙여넣을 수 있습니다! 🚀