엑셀을 사용하면서 복사-붙여 넣기를 할 때 선택하여 붙여 넣기를 하는 경우가 많습니다. 이는 셀을 복사하면서 수식만 복사하거나 값만 복사하는 등의 경우에 사용합니다. VBA에서 이 선택하여 붙여 넣기를 할 수 있는 메서드가 PasteSpecial입니다. 이번에는 이 메서드에 대해 알아보겠습니다.
1. PasteSpecial 메서드
PasteSpecial 메서드를 사용하는 방법은 다음과 같습니다.
Range.PasteSpecial (붙여넣기, 연산, 내용 있는 셀만, 행/열 바꿈)
엑셀에서 Ctrl + Alt + V를 클릭하면 선택하여 붙여 넣기 메뉴창이 출력됩니다. ([그림 1] 참조)
괄호 안의 매개변수는 [그림 1]의 항목들을 보시면 이해가 빠르실 것입니다.
붙여 넣기는 [그림 1]의 붙여 넣기 항목을 선택하는 것이고, 연산은 [그림 1]의 연산 항목을, 내용 있는 셀만과 행/열 바꿈은 [그림 1]의 아래쪽에 있는 선택사항을 나타냅니다.
매개변수로 사용할 수 있는 내장 상수를 정리하여 보았습니다.
1.1 붙여 넣기 (Paste)
내장 상수 | 내 용 |
xlPasteAll | 모두 |
xlPasteAllExceptBorders | 테두리만 제외 |
xlPasteAllMergingConditionalFormats | 조건부 서식 모두 병합 |
xlPasteAllUsingSourceTheme | 원본 테마 사용 |
xlPasteColumnWidths | 열너비 |
xlPasteComments | 메모 |
xlPasteFormats | 서식 |
xlPasteFormulas | 수식 |
xlPasteFormulasAndNumberFormats | 수식 및 숫자 서식 |
xlPasteValidation | 유효성 검사 |
xlPasteValues | 값 |
xlPasteValuesAndNumberFormats | 값 및 숫자 서식 |
1.2 연산 (Operation)
내장 상수 | 내 용 |
xlPasteSpecialOperationAdd | 더하기 |
xlPasteSpecialOperationSubtract | 빼기 |
xlPasteSpecialOperationMultiply | 곱하기 |
xlPasteSpecialOperationDivide | 나누기 |
xlPasteSpecialOperationNone | 없음 |
1.3 내용 있는 셀만 붙여 넣기 (SkipBlanks)
내장 상수 | 내 용 |
True | 체크 표시 |
False | 체크 해제 |
1.4 행/열 바꿈 (Transpose)
내장 상수 | 내 용 |
True | 체크 표시 |
False | 체크 해제 |
2. 예제로 확인
이전 글에서 사용한 가계부 예제를 가지고 설명해 드리겠습니다.
우선 엑셀 시트에 ActiveX 버튼을 하나 생성하고 Caption에 선택하여 붙여넣기라고 입력하였습니다.
그리고, 생성한 버튼을 마우스 왼쪽 버튼으로 더블클릭하여 코드 창을 연 후 다음과 같이 작성합니다.
Private Sub Button_PasteSp_Click()
Dim cell As Range
Set cell = Range(ActiveCell.Address)
Range(cell.Address).Copy
Range("H30").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, skipblanks:=False, Transpose:=False
Application.CutCopyMode = False
cell.ClearContents
End Sub
변수 cell을 생성하고 선택한 셀의 주소를 가져왔습니다. 그리고, 그 셀의 데이터를 복사하여 클립보드에 저장하였습니다.
Range("H30").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False
: H30 셀에 선택하여 붙여 넣기를 실행하라는 명령입니다. 내용은 값만 복사하며 연산은 없음, 나머지 체크 해제를 입력하였습니다. SkipBlanks와 Transpose는 생략 가능합니다.
Application.CutCopyMode = False
: 선택하여 붙여넣기 역시 붙여넣기 메서드와 마찬가지로 해제를 시켜줘야 합니다.
cell.ClearContents
: 생성한 변수 값을 제거합니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA 메서드 Clear & Delete 알아보기 (0) | 2021.12.16 |
---|---|
VBA 그림 복사 메서드 CopyPicture 알아보기 (0) | 2021.12.16 |
VBA로 셀을 복사, 잘라내기 및 붙여넣기 하기 (0) | 2021.12.15 |
VBA Range의 NumberFormat 속성에 대해 알아보기 (0) | 2021.12.11 |
VBA Range의 End 속성 이용하기 (0) | 2021.12.11 |