본문 바로가기

엑셀/VBA

VBA로 셀을 복사, 잘라내기 및 붙여넣기 하기

반응형

Range의 속성에 대해 알아보고 있습니다. 이번에는 엑셀의 셀을 복사하거나 잘라내어 붙여 넣기 하는 방법에 대해 알아보겠습니다.

 

VBA Range의 NumberFormat 속성에 대해 알아보기

 

VBA Range의 NumberFormat 속성에 대해 알아보기

이전 글에서 Range의 속성 중에서 End 속성에 대해 알아보았으며 Formula 속성을 이용하여 합계식을 입력하는 것을 예제를 통해 알아보았습니다. 이번에는 NumberFormat 속성을 이용하여 셀의 표시 형식

mr-johndoe.tistory.com

 

 

 

 

 

1. 복사하기

  VBA에서 셀을 복사(Copy)하려면 Copy 메서드를 이용합니다. 사용하는 방법은 다음과 같습니다.

 

   Range(셀 주소 또는 셀 범위).Copy 복사될 위치

 

괄호 안의 셀 주소 또는 셀 범위에 있는 데이터를 복사될 위치에 입력된 주소로 복사하게 됩니다.

 

2. 잘라내기

  VBA에서 셀을 잘라내기(Cut)하려면 Cut 메서드를 이용합니다. 사용방법은 다음과 같습니다.

 

   Range(셀 주소 또는 셀 범위).Cut 복사될 위치

 

괄호 안의 셀 주소 또는 셀 범위에 있는 데이터를 복사될 위치에 입력된 주소로 이동하게 됩니다.

 

복사하기와 잘라내기 메서드를 사용할 때 복사될 위치를 생략하게 되면 데이터는 클립보드에 데이터를 저장하게 됩니다. 이후에 원하는 위치에 저장된 데이터를 복사하거나 붙여 넣게 됩니다. 

 

3. 붙여 넣기

  클립보드에 저장된 데이터를 붙여 넣기 할 때 Paste 메서드를 이용합니다. 사용하는 방법은 다음과 같습니다.

 

   ActiveSheet.Paste Destination:=Range(셀 주소)

 

괄호 안의 셀 주소로 클립보드에 저장된 데이터를 붙여넣기 합니다. 

 

데이터를 클립보드에 저장한 상태에서 붙여 넣기를 하게 되면 같은 내용을 여러 곳에 붙여넣기 할 수 있게 됩니다. 엑셀에서 셀을 복사하기 위해 Ctrl + C를 클릭하면 선택한 셀의 주변이 점선으로 표시되는 것을 보실 수 있는데 이 상태에서 Ctrl + V 등을 이용하여 여러 위치에 복사할 수 있는 것을 생각하시면 됩니다.

 

그리고, 클립보드에 데이터를 저장하여 Paste 메서드를 이용하여 붙여넣기를 한 경우에는 반드시 다음과 같이 실행문을 작성하여 클립보드 복사를 위해 선택한 사항(선택한 셀 주변이 점선으로 표시)을 해제시켜 주어야 합니다.

 

   Application.CutCopyMode = False

 

 

 

 

4. 예제를 통해 확인

  이전 글에서 사용한 가계부를 통하여 VBA 메서드 셀 복사, 자르기 및 붙여 넣기를 확인해보겠습니다.

 

VBA Range의 SpecialCells 속성 이용하기

 

VBA Range의 SpecialCells 속성 이용하기

이전 글에서 Range에 대해 알아보았습니다. 이번에는 Range의 속성 중에서 SpecialCells에 대해 알아보겠습니다. VBA 엑셀 개체 다루기 - Range VBA 엑셀 개체 다루기 - Range VBA는 사용자가 오피스 프로그램

mr-johndoe.tistory.com

 

엑셀 시트에 ActiveX 버튼 하나를 생성하고 Caption에 '복사'라고 입력합니다. 그리고, 생성한 버튼을 마우스 왼쪽 버튼으로 더블클릭하면 VBE 창이 열리는데 코드 창에 다음과 같이 코드를 작성합니다.

 

   Private Sub Button_Copy_Click()

      Dim cell As Range

 

      Set cell = Range(ActiveCell.Address)

 

      Range(cell.Address).Copy Destination:=Range("H30")

   End Sub

 

변수 cell을 선언하고 현재 선택되어 있는 셀의 주소(ActiveCell.Address)를 변수 cell에 입력하였습니다.

 

Range(cell.Address).Copy Destination:=Range("H30")

: cell에 입력된 주소의 데이터를 복사하여 H30 셀에 복사하라는 명령입니다.

 

코드를 실행하시면 선택하신 셀의 데이터가 H30 셀에 복사되어 붙여 넣기 되는 것을 보실 수 있습니다.

 

버튼을 하나 생성하시고 코드 창을 여신 후 아래와 같이 코드를 작성합니다.

잘라내기는 위의 코드에서 copy를 cut으로 바꿔주시면 됩니다. 그리고, 결과를 확인하기 위하여 붙여 넣기 하는 위치를 H31 셀로 바꿨습니다.

 

   Private Sub Button_Cut_Click()

      Dim cell As Range

 

      Set cell = Range(ActiveCell.Address)

 

      Range(cell.Address).Cut Destination:=Range("H31")

   End Sub

 

코드를 실행하시면 선택하신 셀의 데이터가 H31 셀에 이동되는 것을 보실 수 있습니다.

 

 

 

 

이번에는 Paste에 대해 확인하는 예제입니다.

 

   Private Sub Button_Paste_Click()

      Dim cell As Range

 

      Set cell = Range(ActiveCell.Address)

 

      Range(cell.Address).Copy

      ActiveSheet.Paste Destination:=Range("H32")

      Application.CutCopyMode = False

   End Sub

 

복사하기 코드에서 Destination을 지정하지 않아 클립보드에 데이터가 저장되게 하였습니다.

 

ActiveSheet.Paste Destination:=Range("H32")

: H32 셀에 클립보드에 저장된 데이터를 붙여 넣기 하도록 하였습니다.

 

Application.CutCopyMode = False

: 선택된 셀을 해제하는 명령입니다.

 만약, 이 명령을 입력하지 않고 코드를 실행하면 붙여넣기 된 후에도 선택하였던 셀의 주변이 점선으로 표시되어 있는 상태로 유지되어 있는 것을 보실 수 있습니다. 그러므로, Paste 메서드를 사용하시는 경우 잊지 말고 선택을 해제해 주어야 합니다.

 

또한, 붙여 넣기할 셀 주소를 H32:H35와 같이 입력하시면 H32셀부터 H35셀까지 데이터가 붙여넣기 되는 것을 확인하실 수 있습니다.

 

반응형