본문 바로가기

엑셀/VBA

VBA Range 메서드 PasteSpecial에 대해 알아보기

반응형

엑셀을 사용하면서 복사-붙여 넣기를 할 때 선택하여 붙여 넣기를 하는 경우가 많습니다. 이는 셀을 복사하면서 수식만 복사하거나 값만 복사하는 등의 경우에 사용합니다. VBA에서 이 선택하여 붙여 넣기를 할 수 있는 메서드가 PasteSpecial입니다. 이번에는 이 메서드에 대해 알아보겠습니다.

 

1. PasteSpecial 메서드

  PasteSpecial 메서드를 사용하는 방법은 다음과 같습니다.

 

   Range.PasteSpecial (붙여넣기, 연산, 내용 있는 셀만, 행/열 바꿈)

 

 

 

 

엑셀에서 Ctrl + Alt + V를 클릭하면 선택하여 붙여 넣기 메뉴창이 출력됩니다. ([그림 1] 참조)

 

선택하여-붙여넣기-메뉴창
[그림 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

: 생성한 변수 값을 제거합니다.

 

반응형