본문 바로가기

엑셀/VBA

엑셀 VBA 워크시트 삭제, 복사 및 이동 메서드 - Delete, Copy, Move

반응형

이전 글에서 워크시트 활성화 및 선택, 추가 메서드에 대해 알아보았습니다. 이번에는 시트를 삭제하는 메서드 Delete와 복사 메서드 Copy, 이동 메서드 Move에 대해 알아보겠습니다.

 

1. Delete 메서드

  Delete 메서드는 영어 뜻 그대로 워크시트를 삭제할 때 사용합니다. 사용 방법은 다음과 같습니다.

 

   Worksheets(워크시트 이름).Delete

 

지정한 워크시트 이름의 시트가 삭제됩니다.

 

 

 

 

Delete 메서드를 사용하여 워크시트를 삭제할 때는 [그림 1]과 같은 경고 메시지 창이 출력됩니다.

 

삭제-경고-메시지창
[그림 1] 워크시트 삭제 경고 메시지창

 

만약 경고메시지 창이 출력되지 않도록 하려면 Delete 메서드 이전에 다음과 같은 코드를 추가로 입력해 주어야 합니다.

 

   Application.DisplayAlerts = False

 

경고메시지 출력을 하지 말라는 것으로 Delete 메서드가 실행되고 나서는 다시 True로 환원시켜주어야 합니다.

 

2. Copy 메서드

  워크시트를 복사하려 할 때 Copy 메서드를 사용합니다. 사용 방법은 다음과 같습니다.

 

   Worksheet(워크시트 이름).Copy Before:= Worksheets(워크시트 이름)

 

지정한 워크시트 이름의 시트 복사본이 원본 앞에 생성됩니다.

 

   Worksheet(워크시트 이름).Copy After:= Worksheets(워크시트 이름)

 

지정한 워크시트 이름의 시트 복사본이 원본 뒤에 생성됩니다.

 

3. Move 메서드

  워크시트를 이동할 때 Move 메서드를 사용합니다. 사용 방법은 위의 Copy 메서드 사용 방법과 동일합니다. (Copy 메서드 사용 방법에서 Copy를 Move로 바꾸시면 됩니다.)

 

추가로 워크시트를 새로운 파일의 시트로 복사 또는 이동할 때는 다음과 같이 작성합니다.

 

   Worksheet(워크시트 이름).Copy Before:= Workbooks(워크북 이름).Worksheets(워크시트 이름)

 

워크시트 이름에 해당하는 시트가 워크북 이름의 새 파일에 복사본이 생성됩니다.

워크시트 이름에는 시트의 번호를 입력할 수도 있습니다.

 

 

 

 

4. 예제로 확인

  엑셀에서 VBE 창을 여시고 모듈을 생성하신 후 코드 창에 다음과 같이 코드를 작성합니다.

 

   Public Sub WS_Delete()

      Application.DisplayAlerts = False

      Worksheets("sheet4").Delete

      Application.DisplayAlerts = True

   End Sub

 

Application.DisplayAlerts = False 없이 Delete 메서드를 사용하시면 경고 메시지 창이 화면에 뜨시는 것을 확인하실 수 있습니다. 하지만, 위와 같이 코드를 작성하고 실행하시면 경고창이 뜨지 않고 sheet4 워크시트가 삭제됩니다.

 

이번에는 버튼을 만들고 클릭하면 워크시트가 복사되는 Copy 메서드에 대한 예제를 작성해 보겠습니다. 

먼저 엑셀 워크시트에 ActiveX 버튼 하나를 생성합니다. 그리고, 복사할 워크시트를 하나 더 생성해 놓습니다.

생성하신 버튼을 마우스 왼쪽 버튼으로 더블클릭하셔서 코드 창을 띄우시고 다음과 같이 코드를 작성합니다.

 

   Private Sub Button_WS_Copy_Click()

      Worksheets("sheet1").Copy Before:=Worksheets("sheet1")

   End Sub

 

버튼을 클릭하시면 sheet1(2)라는 워크시트가 복사되어 생성되는 것을 보실 수 있습니다.

 

만약, 다른 파일에 워크시트를 복사하시고 싶으시면 다음과 같이 작성하시면 됩니다.

 

   Private Sub Button_WS_Copy_Click()

      Worksheets("sheet1").Copy Before:=Workbooks("통합 문서1").Worksheets("sheet1")

   End Sub

 

다른 파일에 워크시트를 복사하실 때는 미리 Workbook이 생성되어 있는 상태에서 Copy 메서드를 실행시키셔야 합니다. 위의 코드를 실행하시기 전에 "통합 문서1"이라는 새 파일이 생성되어 있어야 실행됩니다.

 

반응형