VBA 값 붙여넣기 및 선택하여 붙여넣기
이 튜토리얼에서는 VBA에서 붙여넣기 옵션을 사용하여 특정 셀 속성(예: 값, 서식)만 붙여넣는 방법을 보여줍니다.
Excel에서 셀을 복사하여 붙여넣을 때 값, 서식, 수식, 숫자 서식, 테두리 등 셀의 모든 속성을 복사하여 붙여넣습니다:
반면에 ‘선택하여 붙여넣기을 사용하면 특정 셀 속성만 붙여넣을 수 있습니다. Excel에서 특수 붙여넣기 메뉴는 (셀을 복사한 후) 단축키 CTRL + ALT + V를 사용하여 액세스할 수 있습니다:
여기에서 붙여넣을 수 있는 모든 셀 속성 조합을 볼 수 있습니다.
선택하여 붙여넣기 메뉴를 사용할때 매크로 기록 기능을 사용하면 생성된 코드를 간단히 사용할 수 있습니다. 이는 VBA에서 선택하여 붙여넣기 기능을 사용하는 가장 쉬운 방법입니다.
값 붙여넣기
값 붙여넣기는 셀 “값”만 붙여넣습니다. 셀에 수식이 포함된 경우 값 붙여넣기는 수식 결과를 붙여넣습니다.
이 코드는 동일한 워크시트에서 단일 셀에 대한 값을 복사하여 붙여넣습니다:
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
복사하여 다른 시트에 값 붙여넣기
이 예에서는 다른 워크시트의 단일 셀에 대한 값을 복사하여 붙여넣습니다.
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues
이 예제는 셀 범위에 대한 값 복사 및 붙여넣기입니다:
범위 복사 및 값 붙여넣기
Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
열 복사 및 값 붙여넣기
Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues
행 복사 및 값 붙여넣기
Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues
값 및 숫자 서식 붙여넣기
값 붙여넣기는 셀 값만 붙여넣습니다. 숫자 서식을 포함한 서식은 붙여넣지 않습니다.
값을 붙여넣을 때 숫자 서식을 포함해야 값의 서식이 유지되는 경우가 종종 있습니다. 예를 살펴보겠습니다.
여기서는 백분율이 포함된 셀을 값으로 붙여넣겠습니다:
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues
백분율 숫자 서식이 손실되고 대신 소수점을 포함한 값이 표시되는 것을 알 수 있습니다.
이번에는 값 및 숫자 서식 붙여넣기를 사용해보겠습니다:
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
이번에는 숫자 서식도 붙여넣기되어 백분율 서식이 유지되는 것을 볼 수 있습니다.
.Paste를 대신하는 .Value 명령어
값을 붙여넣는 대신 범위 개체의 값 속성을 사용할 수 있습니다:
이렇게 하면 A2의 셀 값이 B2의 셀 값과 동일하게 설정됩니다.
Range("A2").Value = Range("B2").Value
셀의 범위를 단일 셀의 값과 동일하게 설정할 수도 있습니다:
Range("A2:C5").Value = Range("A1").Value
또는 동일한 사이즈의 셀 범위가 같은 값을 가지도록 설정할 수도 있습니다:
Range("B2:D4").Value = Range("A1:C3").Value
Value 속성을 사용하면 코드 라인을 줄일 수 있습니다. 또한 Excel VBA에 능숙해지고 싶다면 셀의 Value 속성과 관련된 작업에 익숙해져야 합니다.
셀 Value 속성과 Value2 속성 비교
기술적으로는 셀의 Value2 속성을 사용하는 것이 더 좋습니다. Value2가 약간 더 빠르며(이는 매우 복잡한 계산에서만 중요함), Value 속성을 사용하면 셀의 형식이 통화 또는 날짜로 지정되어 불완전한 결과를 얻을 수 있습니다. 하지만 제가 본 코드의 99% 이상은 .Value2가 아닌 .Value를 사용합니다. 저는 개인적으로 .Value2를 사용하지 않지만, 그 존재를 알고 있어야 합니다.
Range("A2").Value2 = Range("B2").Value2
복사 붙여넣기 빌더
셀을 복사(또는 잘라내기)하고 붙여넣을 수 있는 VBA 코드를 쉽게 생성할 수 있는 ‘복사 붙여넣기 코드 빌더’를 만들었습니다. 이 빌더는 VBA Add-in의 일부입니다: AutoMacro에 포함되어 있습니다.
AutoMacro 에는 다른 많은 코드 생성기, 광범위한 코드 라이브러리, 강력한 코딩 도구도 포함되어 있습니다.
선택하여 붙여넣기 – 서식 및 수식
값 붙여넣기 외에 가장 일반적인 선택하여 붙여넣기 옵션은 서식 붙여넣기와 수식 붙여넣기입니다.
서식 붙여넣기
서식 붙여넣기를 사용하면 모든 셀 서식을 붙여넣을 수 있습니다.
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
수식 붙여넣기
수식 붙여넣기는 셀 수식만 붙여넣습니다. 셀 수식을 복사하고 싶지만 셀 배경색(또는 다른 셀 서식)은 복사하지 않으려는 경우에 매우 유용합니다.
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
수식 및 숫자 서식 붙여넣기
위의 값 및 숫자 서식 붙여넣기와 유사하게 수식과 함께 숫자 서식도 복사하여 붙여넣을 수 있습니다.
아래에서는 회계 서식의 수식을 복사하여 수식 붙여넣기를 사용하겠습니다.
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
숫자 서식이 손실되고 대신 반올림되지 않은 값이 표시되는 것을 알 수 있습니다.
이번에는 수식 및 숫자 서식 붙여넣기를 사용하겠습니다:
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
이제 숫자 서식도 붙여넣기되어 회계 서식이 유지되는 것을 볼 수 있습니다.
선택하여 붙여넣기 – 행/열 바꿈 및 내용 있는 셀만 붙여넣기
선택하여 붙여넣기 – 행/열 바꿈
선택하여 붙여넣기 -행/열 바꿈을 사용하면 셀의 방향을 위에서 아래로 또는 왼쪽에서 오른쪽으로(또는 그 반대로) 변경하여 복사하여 붙여넣을 수 있습니다:
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
선택하여 붙여넣기 – 내용 있는 셀만 붙여넣기
내용있는 셀만 붙여넣기는 자주 사용되지는 않는 것 같은 선택하여 붙여넣기 옵션입니다. 이 옵션을 사용하면 복사하여 붙여넣을 때 빈 셀이 아닌 셀만 복사할 수 있습니다. 따라서 빈 셀은 복사되지 않습니다.
아래 예제에서는 A 열을 복사하고 B 열에 일반적인 붙여넣기를 수행한 후 C 열에 내용 있는 셀만 붙여넣기를 실행하겠습니다. 아래 이미지에서 빈 셀이 C 열에 붙여넣지 않은 것을 볼 수 있습니다.
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
기타 선택하여 붙여넣기 옵션
선택하여 붙여넣기- 주석 및 메모
Sheets("Sheet1").Range("A1").Copy Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
선택하여 붙여넣기- 유효성 검사
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
선택하여 붙여넣기 – 모두
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme
선택하여 붙여넣기 – 테두리 없음
Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
선택하여 붙여넣기 – 열 너비
A personal favorite of mine. PasteSpecial Column Widths will copy and paste the width of columns.
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
선택하여 붙여넣기 – 조건부 서식 모두 병합
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats