[VBA 제 09강] 복사에 대하여Ⅰ 썸네일 이미지
[VBA 제 09강] 복사에 대하여Ⅰ
콘텐츠 타입 MS 오피스 엑셀 2003(2007, 2010가능), Windows XP 이상
용량0KB
조회1,682
즐겨찾기
[VBA 제 09강] 복사에 대하여Ⅰ를 즐겨찾기 한 횟수는 1 1입니다.
이용등급 프리미엄
제품 상세정보

 




[ 기초 강좌 ]

 

제 9강

복사에 대하여Ⅰ

 

VBA - 복사

그 사용법을 알아봅니다.

이럴 때 필요해요

"복사" , "붙여넣기" 를 수행하는 방법에 대해 알고 싶을 때

이렇게 사용해요

오늘은 VBA로 "복사"하여 "붙여넣기" 까지를 수행하는 방법에 대해 알아 보겠습니다.

※ 복사기의 "복사"와 엑셀의 "복사"는 같다???

여러분의 생각은 어떠신가요

"같다"라고 해도 틀린 것은 아닐 것 입니다. 또한 "같지 않다"라고 해도 틀린 것은 아닙니다.

"같다"라고 한다면, "원본과 같은(동일한) 사본을 만든다"는 것을 말하는 것이겠지요.

 

"같지 않다"라고 한다면 복사기는 원본에 빛을 쏘아, 동일한 형상의 사본을 만들고 엑셀에서의 복사는

선택한 개체(복사기의 원본과 같음) 를 컴퓨터의 메모리 영역에 임시로 저장했다가 사용자가 사본을 출력하고자

하는 위치에 원본과 같은 것을 출력해 준다 뭐 그런차이가 아닐까 생각합니다.

 

먼저 복사할 셀을 선택하고 "복사"한 다음, 사용자가 지정한 다른 셀에 "붙여넣기"하는 아래의

매크로 버튼(<방법1>)을 눌러 보시기 바랍니다.

 

<방법1>

가장 기본적인 방법으로써 매크로의 진행 과정은 다음과 같습니다.

 

 Range("B25").Select                                                            셀(B25)을 선택한다.

    Selection.Colpy                                                               선택한 셀을 복사한다.

 Range("D25").Select                                          ⇒        ?복사한 것을 붙여넣을 셀(D25)을 선택한다. 

    ActiveSheet.Paste                                                            복사한것을 붙여넣는다.

 Application.CutCopyMode = False                                         복사한 셀의 사방에 생긴 점선을 지워버린다.

 

<방법2>

다음은 방금 출력한 D25셀의 내용을 지운 다음 위 <방법2>의 Macro 실행버튼을 눌러보시고 나타나는 결과를

비교해 보시기 바랍니다. 아마 <방법1>과 마찬가지의 결과가 나타 날 것입니다.

단지 차이가 있다면 소스가 아래와 같이 단 한줄로 코딩되어 있다는 것입니다.

 

 Range("B25").Copy Destination:=Range("D25")

?

 

<방법2>

5줄의 코드를 읽고 실행하는 것 보다는 한 줄의 코드를 실행하는 것이 수행속도면에서 빠를 뿐만 아니라 효율적입니다.

앞에서의 <방법1>과 같이 셀을 선택해서 복사하고 다시 붙여넣기 할 셀을 선택한 다음, 복사한 내용을 다시 붙여넣기

하는 것이 아니고 곧장 B25 셀을 복사해서 D25셀에 붙여넣기 합니다

위 코드에서 "Destination:="은 생략해도 무방합니다.

즉, Range("B25").Copy Range("D25")로 코딩해 주어도 같은 결과를 구할 수 있습니다.

참고로 제대로 하자면 Destination:=Worksheets("강좌").Range("D25")로 코딩해야 합니다만, 여기에서 시트명(Worksheet개체)

을 생략하면, 현재 열려 있는 시트(Active Sheet)를 기본 값으로 인식합니다.

또한, 현재 시트의 특정 셀의 갑을 다른 시트에 붙여넣기 하는 방법 역시 간단합니다.

 

먼저, 예제Sheet를 살펴 보시고 오시기 바랍니다.

 <다른 시트에 붙여넣기> 버튼을 눌러 보시기 바랍니다.

 

[VBA 제 09강] 복사에 대하여Ⅰ


앞서 설명드린 <방법2>의 코드에서 붙여넣기할 시트 및 셀의 주소만 지정해 주면 한줄의 코드로 해결됩니다.

 

 

 Range("B61").Copy Destination:=Sheets(2).Range("C5")

 

그런데 만약 붙여넣기할 셀의 위치를 다른 시트의 데이터가 없는 마지막 셀로 지정할 경우에는 어떻게 해야 할까요?

 

매크로버튼을 눌러 보시기 바랍니다.

 

[VBA 제 09강] 복사에 대하여Ⅰ 

?코드는 아래와 같습니다.

 Range("B73").Copy Destination:=sheets(2).Range("A65536").End(xIUp).Offset(1,0)

     Sheets(2).Select

     Sheets(2).Range("A65536").End(xIUp).Select

 

위 코드를 해석하자면

Range("B73").Copy Destination:=Sheets(2).Range("A65536").End(xIUp).Offset(1,0)

B73셀 값을 복사한 다음, 시트2(Sheet(2))의 A열 마지막 셀 (A65536) 위치에서 위쪽으로 데이터가 있는

셀(End(xIUp))을 선택하고 다시 한칸 아래의 셀 (Offset(1,0))에 값을 붙여넣기 하시오

         Sheets(2).Range("A65536").End(xIUp).Select

시트2를 선택하고(실전에서는 별로 사용하지 않지만 강좌의 편의를 위해 지정했습니다.)

   Sheets(2).Range("A65536").End(xIUp).Select

시트2의 마지막 셀을 선택하시요.

 

위 코드를 보다 세련되게 만들면 아래와 같이 할 수도 있습니다.

 

      복사된 것을 붙여넣기할 위치를 기억시킬(참조시킬) 변수를 선언

      변수의 데이터 형식은 셀을 참조할 것이므로 Range Object가 됨

Dim rngPosition As Range

      시트2에서 데이터가 없는 마지막 셀을 변수에 참조시킴

Set rngPosition = Sheets(2).Range("A65536).End(xIUp).Offset(1,0)

     붙여넣기할 위치에 변수 rnsPosition을 지정하면 끝

Range("B73").Copy rngPosition

Sheets(2).Select

rngPosition.Select

 

이와 같이 변수를 사용하면 코드가 간결해지고 가독성이 훨씬 좋아집니다.

 

자 그런데 이쯤에서 매크로 기능을 사용하여 복사하고 붙여넣기를 할 수 있다면 혹시 WorkSheet에서의

[선택하여 붙여넣기]-[값], 또는 [선택하여 붙여넣기]-[수식]과 같은 기능도 실행할 수 있지 않을까?

라는 의문이 드실 수도 있습니다.

 

[VBA 제 09강] 복사에 대하여Ⅰ

 

같은 결과가 출력되었습니다. 그러나 방금 결과값이 출력된 셀들을 차례로 선택해서 '수식입력줄'을 살펴 보시면

분명한 차이가 있음을 아실 수 있을것입니다.

 

 <값 붙여넣기>

Range("복사범위").Copy

Range("붙여넣을 위치").PasteSpecial xIPasteValues

Application.CutCopyMode = False

  일단 범위를 복사하기

  선택하여 붙여넣기(PasteSpecial)

  값만 붙여넣기(xIPasteValues)

  복사된 셀의 점선 테두리를 없애기

 <수식 붙여넣기>

Range("복사범위").Copy

Range("붙여넣을 위치").PasteSpecial Paste:=xIPasteFormulas

 

일단 범위를 복사하기

선택하여 붙여넣기 - 수식으로 붙여넣기(xIPasteFormulas)

복사된 셀의 점선 테두리를 없애기

 

 


※위 두 코드의 차이점을 잘 살펴 보시기 바랍니다.

 

저작권정보
1. 콘텐츠의 저작권은 쿠키(www.coukey.co.kr)에 있으며, 사용권한은 1인 1카피입니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
[VBA 제 09강] 복사에 대하여Ⅰ
이용후기

업무자동화 맞춤제작

고객님의 상황에 100% 맞춘 콘텐츠 제작 전문 서비스를 이용해 보세요.
프리미엄 무료 이벤트 중