일반적으로 엑셀을 사용하면서 셀의 내용을 지우거나 셀 자체를 삭제할 수 있습니다. 이런 기능을 VBA에서도 구현할 수 있는데 이럴 때 사용하는 메서드가 Clear와 Delete입니다.
VBA 그림 복사 메서드 CopyPicture 알아보기
1. Clear 메서드
Clear 메서드는 셀의 내용을 지울 때 사용합니다. Clear 메서드에는 여러 가지가 있는데 표로 정리해 보았습니다.
메서드 | 설 명 |
Clear | 셀(또는 범위)의 값, 수식, 셀 서식 모두 삭제 |
ClearComments | 셀(또는 범위)의 메모 삭제 |
ClearContents | 셀(또는 범위)의 값, 수식 삭제 |
ClearFormats | 셀(또는 범위)의 셀 서식 삭제 |
ClearHyperlinks | 셀(또는 범위)의 하이퍼링크 삭제 |
ClearNotes | 셀(또는 범위)의 메모 및 소리 메모 삭제 |
ClearOutline | 셀(또는 범위)의 테두리 선 삭제 |
2. Delete 메서드
Delete 메서드는 셀 자체를 삭제합니다. 이 기능은 엑셀 메뉴 홈-셀-삭제-셀 삭제와 동일합니다. ([그림 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 셀의 데이터, 서식 및 테두리 모두 삭제하라는 명령입니다.
[그림 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열)를 삭제하라는 명령입니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA 메서드 셀 병합 Merge 및 병합 해제 UnMerge에 대해 알아보기 (0) | 2021.12.17 |
---|---|
VBA 셀 삽입 메서드 Insert에 대해 알아보기 (0) | 2021.12.17 |
VBA 그림 복사 메서드 CopyPicture 알아보기 (0) | 2021.12.16 |
VBA Range 메서드 PasteSpecial에 대해 알아보기 (0) | 2021.12.15 |
VBA로 셀을 복사, 잘라내기 및 붙여넣기 하기 (0) | 2021.12.15 |