본문 바로가기
  • 반가워요 : )
엑셀

VBA 복사 붙여넣기 3가지 방법

by 교육의 기울기 2024. 7. 30.
반응형

이 글에서는, VBA에서 복사 붙여 넣기하는 3가지 방법을 알아보려고 합니다. 

여기 있는방법만 알아도, 웬만한 복사는 가능합니다.

방법을 찾기 어렵다면, MS 메뉴얼, 매크로 기록, CHATGPT, FORUM에서 알아보실수있습니다.

 

엑셀 VBA에서 셀을 참조하는 10가지 방법

이전글을 보고 오시면, 더 수월하게 읽으실수 있습니다.

 

 

이글에서는 아래와 같이 복사 붙여넣기를 합니다. 

크게 세가지의 복사를 설명합니다.

 

VBA 일반 복사 붙여넣기

A4:E12에 데이터 영역이 하나있습니다. 이것을 복사 붙여넣기하려면 어떻게 해야할까요?
그냥 일반적인 복사를 하시려면, 'Range' object에서 copy 메소드를 사용하세요. copy 메소드는 Range("범위").copy [destination]을 사용하시면 됩니다.
아래 코드의 예시를 보시고 따라해보세요.

'-----------------------
'copy [destination] (일반 복사)
'-----------------------

Range("a4:e10").Copy Range("j4")
' 일반적인 카피를 하였더니, 내부에있는 수식까지 복사되었다.

Range("a4").CurrentRegion.Copy Range("j4")
' 데이터 추가를 고려한다면 동적인 범위를 잡아주는 코드를 사용하자.

 

VBA 특수복사

엑셀에서는 일반적인 붙여넣기 외 다양한 방식의 복사 붙여넣기 방식이 존재합니다.
(값만 붙여넣기, 포멧 붙여넣기)
여기서는 데이터 범위를 복사후에, 값과, 포멧을 함께 붙여넣기 하는방식을 사용했습니다.
만약 어떤 붙여넣기를 사용해야하는지 모르겠다면, 아래 사진과 같이 pastespecial 코드를 쓰고나서, 스페이스를 누르시면 사용할수있는 목록이 드랍다운이 나옵니다. 이중 골라서 사용하시면됩니다. 혹은, 매크로 기록을 이용하시면 어떻게 붙여넣기해야할지 알수있습니다. 

위와 같이 드롭다운으로 어떤 복사가 필요한지 찾아볼수있다.

 

'-----------------------
'PasteSpecial (특수한 복사기법)
'-----------------------

Range("a4").CurrentRegion.Copy
' 복사하기
Range("j20").PasteSpecial xlPasteValuesAndNumberFormats
' 값을 붙여넣기한다. 그리고 숫자 포멧도 같이 붙여넣기
Range("j20").PasteSpecial xlPasteComments
' 코멘트를 붙여넣기 한다.

 

헤더를 제외하고 복사하기

데이터범위에 있는 헤더부분을 빼고 순수 데이터 부분만 복사 붙여넣기하려면 어떻게해야할까요?
그 방법은, 데이터 범위를 RESIZE한후 COPY PASTE를 하시면 됩니다. 아래 예시로 알아보세요.

'-----------------------
'Resize (특정범위 수정하기)
'-----------------------

Range("a4").CurrentRegion.Offset(1, 0).Resize(Range("a4").CurrentRegion.Rows.Count - 1).Copy
' A4에서 범위잡은채로 한칸 내려온다. 그리고 현재 데이터 범위에 맞게 RESIZE시킨후, 복사한다.
'Range("a4").CurrentRegion.Rows.Count 는 9개가 나온다. 그러므로 1을 빼줘야 8개로 제대로 복사가된다.

Range("a20").PasteSpecial xlPasteValuesAndNumberFormats

Application.CutCopyMode = False
'복사 범위가 잡혀있는것은 Cancel 시켜준다.




반응형

댓글