Range 개체

PasteSpecial 메서드

노만e 2025. 3. 10. 19:37

엑셀 VBA에서 PasteSpecial 메서드는 특정 요소(값, 서식, 수식 등)만 붙여넣을 때 사용됩니다.

즉, 일반 Paste와 달리 원하는 속성(값, 서식, 수식, 열 너비 등)만 선택하여 붙여넣기 가능합니다.


1. 기본 문법

Range("붙여넣을 위치").PasteSpecial Paste:=붙여넣을 유형, Operation:=연산, SkipBlanks:=True/False, Transpose:=True/False
  • Paste (필수): 붙여넣을 유형 (xlPasteValues, xlPasteFormats 등)
  • Operation (선택): 붙여넣기 시 적용할 연산 (xlPasteSpecialOperationAdd, xlPasteSpecialOperationMultiply 등)
  • SkipBlanks (선택): True로 설정하면 빈 셀은 건너뜀
  • Transpose (선택): True로 설정하면 행과 열을 바꿔서 붙여넣기

2. 주요 Paste 옵션

옵션
설명
xlPasteAll
모든 요소(값 + 서식 + 수식) 붙여넣기
xlPasteValues
값만 붙여넣기 (수식 제거)
xlPasteFormulas
수식만 붙여넣기 (서식 유지)
xlPasteFormats
서식만 붙여넣기
xlPasteColumnWidths
열 너비만 붙여넣기
xlPasteComments
메모(댓글)만 붙여넣기
xlPasteValidation
데이터 유효성 검사 규칙만 붙여넣기

3. 특정 요소 붙여넣기 예제

📌 값만 붙여넣기 (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에 붙여넣기


📌 데이터 유효성 검사 규칙만 붙여넣기 (xlPasteValidation)

Sub 유효성검사_붙여넣기()
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValidation
Application.CutCopyMode = False
End Sub

📌 A1의 데이터 유효성 검사(예: 목록, 숫자 범위 등)만 B1에 붙여넣기


4. 연산 적용하여 붙여넣기


📌 기존 값에 더하기 (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. 행과 열 바꿔서 붙여넣기 (Transpose:=True)

Sub 행렬_변환_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
End Sub

📌 A1:A5의 데이터를 B1:F1(가로 방향)으로 붙여넣기


6. 빈 셀 제외하고 붙여넣기 (SkipBlanks:=True)

Sub 빈셀제외_붙여넣기()
Range("A1:A5").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
Application.CutCopyMode = False
End Sub

📌 빈 셀을 제외하고 값 붙여넣기


📝 정리

기능
VBA 코드
값만 붙여넣기
PasteSpecial Paste:=xlPasteValues
수식만 붙여넣기
PasteSpecial Paste:=xlPasteFormulas
서식만 붙여넣기
PasteSpecial Paste:=xlPasteFormats
열 너비만 붙여넣기
PasteSpecial Paste:=xlPasteColumnWidths
메모(댓글)만 붙여넣기
PasteSpecial Paste:=xlPasteComments
유효성 검사만 붙여넣기
PasteSpecial Paste:=xlPasteValidation
더하기 연산 적용
Operation:=xlPasteSpecialOperationAdd
행과 열 바꿔 붙여넣기
Transpose:=True
빈 셀 제외하고 붙여넣기
SkipBlanks:=True

🔥 VBA의 PasteSpecial을 활용하면 데이터 처리를 유연하게 자동화할 수 있습니다! 🚀