728x90
목차

1. COPY : 복사하기 

2. 범위.PasteSpecial : 선택하여 붙여넣기

3. XlPasteType 형식 : 어느것을 선택하여 붙여 넣을지

4. XlPasteSpecialOperation 형식 : 연산하여 붙여넣기

 

엑셀은 워드프로세서이기도 하여 복사하여 붙이는 기능이 자주 사용됩니다.
가장 많은 컴퓨터 사용자가 쓰는 기능이 Ctrl + C / Ctrl + V가 아닐가 싶네요
VBA에서도 사용법을 알아두면 편합니다. 복사하여 붙어넣기를 어떻게 하는지 포스팅합니다.
 
 

1. COPY : 복사하기 

 
단일 셀이나 범위를 선택하고 복사를 합니다.
엑셀에서 셀 복사는 특수한 기능입니다.
복사를 하면 셀주위에 점선이 돌고 있고, 값이 클립보드에 들어가게됩니다.

엑셀의 값은 눈에 보이는 글자 뿐 아니라 셀의 색, 글자체등 정보들이 다 들어가기 때문에 양이 좀 됩니다.
이 상황에서 다른기능을 활성화하거나 셀에 글자를 쳐 넣으면 클립보드에 들어간 정보가 사라집니다.
그래서 EXCEL의 COPY는 항상 직후에 붙여넣기가 들어가야 합니다.

Range("B3").Select      ' 복사할 셀을 선택합니다.
Selection.Copy             ' 선택한 셀 복사
Range("B12").Select    ' 붙여넣을 셀 선택
ActiveSheet.Paste        ' 붙여넣기

셀을 선택하여 활성화 시키고 ActiveSheet.Paste 명령어를 통해 붙여 넣습니다.
이게 불편한게 COPY 할때는 Selection 명령어가 들어가는데 Paste는 ActiveSheet의 매개변수로 동작합니다.

 

320x100


 

2. 범위.PasteSpecial : 선택하여 붙여넣기

 
VBA에서는 선택하여 붙여넣기가 더 편합니다.
이 명령어는 옵션이 많은데 기능을 하나씩 보도록 하겠습니다.
 
expression.PasteSpecial (Paste, Operation, SkipBlanks, Transpose)
 

  • Paste : 셀에는 서식, 값, 수식등 다양한 값이 있습니다. 셀의 어떤 값을 붙여 넣을 선택합니다.
    XlPasteType 형식에서 선택하여 입력하며 이 형식은 아래에 추가 설명하겠습니다.
  • Operation : 붙여넣으면서 연산을 수행할지, 어떤 연산을 할지 선택합니다.
  • XlPasteSpecialOperation : 형식에서 선택하여 입력하며 이 형식은 아래에 추가 설명하겠습니다.
  • SkipBlanks : 복사한 셀 중 빈 셀이 있을때 빈 셀을 붙여 넣을지 결정합니다.
    (True : 붙여넣기 하지 않는다., False : 붙여넣는다., 기본값은 False)
  • Transpose : 붙여넣으면서 행열 바꾸기를 수행할 지를 선택합니다.
    (True : 행열을 바꿈, False : 행열을 교체하지 안고 그대로 넣습니다. 기본값은 False)

 
아래 예시는 가장 많이 쓰는 "값만 붙여넣기" 입니다.

 

Sub ex2()

    Range("E3:G4").Select	
    Selection.Copy		'선택한 셀을 카피합니다.
    Range("E8").Select		'복사할 위치를 선택합니다.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, __
    Transpose:=False
    '값만 선택하여 붙여넣기를 실행합니다.
    
    Application.CutCopyMode = False	'복사한 셀들에서 복사 모드를 취소합니다.
    
End Sub

 

Tip. Application.CutCopyMode = False는 복사하려고 선택된 범위를 취소합니다.
VBA 코드가 길어지거나 종료되고 사용자가 실수로 Enter등을 눌러서 오류가 나는 것을 방지할 수 있습니다.
 

 

3. XlPasteType 형식 : 어느것을 선택하여 붙여 넣을지

 
엑셀 인터페이스에서 선택이 가능한 부분으로 선택하여 붙여넣기를 할 수 있는 여러가지 옵션입니다.
VBA에서 어떻게 쓰는지 알아보겠습니다.

 

 
VBA 선택하여 붙여넣기의 XlPasteType들 ()안은 코드번호입니다.
 

  • xlPasteAll(-4104) : 모든 것을 붙입니다.(이때 열너비 제외합니다.)
  • xlPasteAllExceptBorders(7) : 테두리를 제외한 모든 것을 붙입니다.
  • xlPasteAllMergingConditionalFormats(14) : 모두 붙여넣고 조건부 서식이 병합됩니다.
    모두 붙여넣기로도 조건부 서식이 붙여넣어 집니다.
  • xlPasteAllUsingSourceTheme(13) : 소스테마를 포함하여 모든것이 붙여넣어 집니다.
  • xlPasteColumnWidths(8) : 열너비만 붙여넣습니다. 다른기능에서 열너비는 붙여넣지 않음으로 이건 독립적으로 사용해야 합니다. 내용은 안 붙이지만 서식을 만들때는 빈도가 높습니다.
  • xlPasteComments(-4144) : 메모만 붙여 넣습니다.
  • xlPasteFormats(-4122) : 표현형식이나 글자색 같은 서식만 붙여 넣습니다.
  • xlPasteFormulas(-4123) : 수식만 붙여 넣습니다.
  • xlPasteFormulasAndNumberFormats(11) : 수식과 숫자 서식이 복사 됩니다.
  • xlPasteValidation(6) : 유효성 검사만 붙여 넣습니다.
  • xlPasteValues(-4163) : 값만 붙여넣습니다.
  • xlPasteValuesAndNumberFormats(12) : 값과 숫자서식만을 붙여 넣습니다.

 

 

 

4. XlPasteSpecialOperation 형식 : 연산하여 붙여넣기

 
연산하여 붙여넣기를 실행하고 또 연산을 어떻게 할지 선택합니다.
 

  • xlNone(1) : 계산기능을 수행하지 않고 일반적으로 붙입니다.
  • xlPasteSpecialOperationNone(-4142) : 계산기능을 수행하지 않고 일반적으로 붙입니다.
  • xlPasteSpecialOperationAdd(2) : 문자는 복사되지 않고 숫자는 기존 숫자에 더해집니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 30이 됩니다.
  • xlPasteSpecialOperationSubtract(3) : 문자는 복사되지 않고 숫자는 기존 숫자에 뺍니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 10이 됩니다.
  • xlPasteSpecialOperationDivide(5) : 문자는 복사되지 않고 숫자는 기존 숫자에 나눕니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 2이 됩니다.
  • xlPasteSpecialOperationMultiply(4) : 문자는 복사되지 않고 숫자는 기존 숫자에 곱합니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 200이 됩니다.

 
명령어를 직접 넣을 수도 있고 위에 설명에 ()안의 코드를 넣을 수도 있습니다.
코드를 넣으면 짧아집니다. 아래 두줄의 소스는 정확하게 같은 기능을 수행합니다.

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False

Selection.PasteSpecial Paste:=-4104, Operation:=-4142, SkipBlanks:=False, Transpose:=False

 
 

반응형

+ Recent posts