본문 바로가기

엑셀/VBA

VBA 메서드 Clear & Delete 알아보기

반응형

일반적으로 엑셀을 사용하면서 셀의 내용을 지우거나 셀 자체를 삭제할 수 있습니다. 이런 기능을 VBA에서도 구현할 수 있는데 이럴 때 사용하는 메서드가 Clear와 Delete입니다.

 

VBA 그림 복사 메서드 CopyPicture 알아보기

 

VBA 그림 복사 메서드 CopyPicture 알아보기

엑셀에서 견적서의 결제란 서식을 작성하여 이를 그림으로 저장한 후 표시하는 방법에 대해 이전 글에서 알아봤었습니다. 이를 VBA에서도 CopyPicture 메서드를 사용하여 구현할 수 있습니다. 이 메

mr-johndoe.tistory.com

 

 

 

 

 

1. Clear 메서드

  Clear 메서드는 셀의 내용을 지울 때 사용합니다. Clear 메서드에는 여러 가지가 있는데 표로 정리해 보았습니다.

 

메서드 설 명
Clear 셀(또는 범위)의 값, 수식, 셀 서식 모두 삭제
ClearComments 셀(또는 범위)의 메모 삭제
ClearContents 셀(또는 범위)의 값, 수식 삭제
ClearFormats 셀(또는 범위)의 셀 서식 삭제
ClearHyperlinks 셀(또는 범위)의 하이퍼링크 삭제
ClearNotes 셀(또는 범위)의 메모 및 소리 메모 삭제
ClearOutline 셀(또는 범위)의 테두리 선 삭제

 

2. Delete 메서드

  Delete 메서드는 셀 자체를 삭제합니다. 이 기능은 엑셀 메뉴 --삭제-셀 삭제와 동일합니다. ([그림 1] 참조)

 

셀-삭제-메뉴창
[그림 1] 셀 삭제 메뉴창

 

[그림 1]의 선택사항에 해당하는 Delete 메서드가 존재합니다. 해당하는 메서드 사용방법을 아래에 정리해 보았습니다.

 

셀을 왼쪽으로 밀기 => Range(셀 주소).Delete Shift:=xlShiftToLeft

 

셀을 위로 밀기 => Range(셀 주소).Delete Shift:=xlShiftUp

 

행 전체 => Range(셀 주소).EntireRow.Delete

 

열 전체 => Range(셀 주소).EntireColumn.Delete

 

 

 

 

3. 예제로 확인

  예제 파일로는 이전 글에서 사용하던 가계부를 이용하겠습니다. VBE 창을 여시고 모듈을 생성하시고 코드 창에 다음과 같이 입력합니다.

 

   Public Sub Clear_Method()

      ActiveSheet.Range("A1").ClearFormats

      ActiveSheet.Range("C1").ClearContents

      ActiveSheet.Range("D1").Clear

   End Sub

 

ActiveSheet.Range("A1").ClearFormats

: 활성화되어 있는 시트에서 A1 셀의 서식을 모두 삭제하라는 명령입니다.

 

ActiveSheet.Range("C1").ClearContents

: 활성화되어 있는 시트에서 C1 셀의 내용을 모두 삭제하라는 명령입니다.

 

ActiveSheet.Range("D1").Clear

: 활성화되어 있는 시트에서 D1 셀의 데이터, 서식 및 테두리 모두 삭제하라는 명령입니다.

 

가계부-Clear-실행결과
[그림 1] Clear 실행 결과

[그림 1]을 보시면 A1 셀은 테두리와 가운데 맞춤 및 바탕색이 삭제된 것을 보실 수 있습니다. 그리고, C1 셀은 입력되어 있던 '수입'이 삭제되었고, D1 셀은 모두 삭제된 것을 보실 수 있습니다.

 

이제 모듈을 하나 더 생성하시고 아래와 같이 코드를 작성합니다.

 

   Public Sub Delete_Method()

      ActiveSheet.Range("B2").Delete shift:=xlShiftToLeft

      ActiveSheet.Range("D3").Delete shift:=xlShiftUp

      ActiveSheet.Range("B5").EntireRow.Delete

      ActiveSheet.Range("E6").EntireColumn.Delete

   End Sub

 

ActiveSheet.Range("B2").Delete shift:=xlShiftToLeft

: 활성화되어 있는 시트에서 B2 셀의 내용을 지우고 우측의 셀에 있는 내용을 이동시켜 C2 셀의 내용은 B2 셀로, D2 셀의 내용은 C2 셀로, 마지막 셀까지 이동하라는 명령입니다.

 

ActiveSheet.Range("D3").Delete shift:=xlShiftUp

: 활성화되어 있는 시트에서 D3 셀의 내용을 지우고 아래 셀에 있는 내용을 위로 이동시켜 D4 셀의 내용은 D3 셀로, D5 셀의 내용은 D4 셀로, 마지막 셀까지 모두 이동하라는 명령입니다.

 

ActiveSheet.Range("B5").EntireRow.Delete

: 활성화되어 있는 시트에서 B5 셀의 행 전체(5행)를 삭제하라는 명령입니다.

 

ActiveSheet.Range("E6").EntireColumn.Delete

: 활성화되어 있는 시트에서 E6 셀의 열 전체(E열)를 삭제하라는 명령입니다.

 

반응형