VBA 범위 선택하기 5탄 (UsedRange, CurrentRegion, entirerow)
UsedRange, CurrentRegion, entirerow는 연속된 범위를 설정하는 방법으로 유용하게 사용될 수 있어요. 다양한 예시를 통해 학습하시면 VBA실력이 한단계 업그레이드 될거에요.
오늘은 VBA 범위 선택하기 5탄 UsedRange, CurrentRegion, entirerow을 통한 범위 선택에 대해 알아보도록 할게요. 범위 선택의 방법은 매우 다양하므로 1~4탄을 숙지하고 오시면 큰 도움이 될 거예요.
VBA 범위 선택 목차
1. VBA 범위 선택하기 1탄 : Range로 범위 선택
2. VBA 범위 선택하기 2탄 : Cells와 Resize, Offset의 조합을 통한 범위 선택
3. VBA 범위 선택하기 3탄 : Union, Intersect을 사용한 범위 선택
4. VBA 범위 선택하기 4탄 : Specialcells를 통한 범위 선택
5. VBA 범위 선택하기 5탄 : UsedRange, CurrentRegion, entirerow(column)을 통한 범위 선택
6. VBA 범위 선택하기 6탄 : Areas를 사용한 범위 선택
UsedRange, CurrentRegion, entirerow를 알아보자
usedRange, CurrentRegion, entirerow(entirecolumn)에 대해 하나씩 알아보도록 할게요.
usedRange
엑셀에서 사용되고 있는 영역으로 인식되는 부분을 범위로 설정하는 것이 usedRange 속성이에요. usedrange속성을 사용하게 되면 데이터가 들어가 있는 시작 위치와 마지막 위치까지의 행과 열이 범위로 선택되죠.
CurrentRegion
선택된 셀에서 연속된 데이터의 영역을 설정하는 것이 currentRegion 속성이에요. 아래 학생수 표를 아무 곳이나 선택한 후 currentRegion 속성을 사용하면 표 전체 범위가 선택되는 것을 볼 수 있어요.
entirerow
지정된 범위를 포함하는 행 전체를 선택하는 역할을 하는 것이 entirerow 속성이에요.
즉, "B2"셀만 선택 후 entirerow 속성을 적용시키면 2행 전체가 선택되게 돼요. (entirecolumn도 동일하게 작동됩니다.)
오늘 학습하는 usedRange, CurrentRegion, entirerow(entirecolumn)는 다른 범위 설정 방법보다 수월하게 끝날 거 같은 느낌적인 느낌이 오고 있는데요. 활용 편에서 조금 더 깊이 있게 다루어 보도록 할게요.
활용 : usedRange, CurrentRegion, entirerow를 사용한 데이터 삭제!
지금까지 예시로 사용해 왔던 학생수 테이블이 다시 재등장하였어요! 예시를 가지고 usedRange, CurrentRegion, entirerow를 사용하여 데이터 내용을 삭제해 보도록 할게요.
자 그럼 시작해 볼까요! 먼저 UsedRange를 사용하여 범위를 선택 후 데이터를 삭제해 보도록 하겠습니다.
Sub del() Dim rng As Range ' 범위를 담을 변수 선언 Set rng = ActiveSheet.UsedRange ' 활성화된 시트에서 사용된 범위를 rng변수에 반영 rng.Delete rng.Clear ' 삭제를 위한 매서드로 Delete, Clear가 사용됨. End Sub |
다음과 같은 코드를 실행하면 어떻게 될까요?? Delete, Clear 둘 중 어떤 메서드를 사용하더라도 전체 데이터가 삭제되게 되죠. 세부적으로 살펴볼게요.
Set rng = ActiveSheet.UsedRange는 현재 활성화되어있는 워크시트에 사용된 범위를 rng라는 변수에 담는 작업인데요.
변수로 담아서 사용하는 이유에 대해서는 매번 말씀드리고 있으니 궁금하시면 아래 링크로 확인해 주세요!
rng.Delete와 rng.Clear는 사실 같은 동작을 나타내는 매서드라고 이해하시면 될 것 같은데요. 선택된 rng 범위를 아예 흔적도 남지 않도록 삭제하는 매서드예요. 그럼 왜 두 가지를 다 적어놓았을까요?
바로 Clear 매서드의 효율성이 보다 좋기 때문인데요. Clear은 아래와 같은 형태로 필요에 따라 다르게 사용될 수 있어요.
ㆍ Clear : 셀 내용 및 모든 서식 삭제
ㆍ Clearcontents : 셀 내용만 삭제
ㆍ Clearformats : 셀 서식만 삭제
ㆍ Clearcomments : 해당 셀에 입력된 메모 삭제
결국 rng.Clear를 rng.Clearcontents로 바꾸면 서식은 남겨있는 채로 데이터 내용만 삭제가 되며, rng.Clear를 rng.Clearformats로 바꾸면 데이터는 남아있는 상태에서 서식만 삭제된다는 것이에요! 유용하게 사용될 수 있겠죠?
다음은 Currentregion을 사용하여 데이터를 삭제해볼 차례인데요. 코드를 보시죠!
Sub del() Dim rng As Range ' 범위를 담을 변수 선언 Set rng = Range("B2").CurrentRegion ' B2셀로부터 연속된 범위를 rng변수에 반영 rng.delete rng.Clear ' 삭제를 위한 매서드로 Delete, Clear가 사용됨. End Sub |
위 코드와의 차이점이 보이시나요? 맞아요! 바로 rng 범위 설정 방법의 차이가 있어요.UsedRange를 사용하게 되면 sheet1의 데이터가 전부 삭제가 되는 반면에 CurrentRegion을 사용하게 되면 아래 이미지처럼 표만 삭제가 되는것이죠.
Set rng = Range("B2").CurrentRegion의 경우에는 B2셀부터 E11셀까지 표에 해당하는 범위를 설정해 주는데요. Range("B2", "E11")을 간략하게, 그리고 연속될 범위를 조정해줄 필요 없이 행열이 늘어나는 것을 자동으로 반영해 준다는 장점이 있어요. 이후에 사용된 Delete와 clear는 위에 사용된 방법과 동일한 것이니 생략토록 할게요!
마지막으로 entirerow를 사용해볼 차례인데요! 바로 코드를 보면서 설명드릴게요!
Sub del() Dim rng As Range ' 범위를 담을 변수 선언 Set rng = Range("B10").EntireRow ' B10셀이 위치한 전체 행을 rng변수에 반영 rng.delete rng.Clear ' 삭제를 위한 매서드로 Delete, Clear가 사용됨. End Sub |
이번에도 마찬가지로 rng범위의 설정 방법의 차이만 존재하는 것을 확인하실 수 있는데요. Set rng = Range("B10").EntireRow는 B10셀을 기준으로 그 행이 포함된 전체 행을 범위를 말해요. 즉, 8반이 위치한 모든 행이 선택된 것이죠. 이후 Delete 또는 Clear 매서드가 사용되면서 8반이 위치한 행은 삭제가 되고 전교생으로 표현된 데이터들이 10행에 위치하게 되는 것이죠.
이번 설정 범위는 개별적으로 사용한 예시로 설명드리다 보니 조금 쉽게 넘어간 느낌이 드는데요. 다양한 범위 설정 방법을 숙지하셔서 필요에 맞는 코드를 구축하는 연습을 하시면 실력 향상에 큰 도움이 될 거예요.
엑셀 VBA는 지식적인 측면이 아닌 기술적인 측면이 강하기 때문에 코드를 계속 짜 보면서 숙달해야 될 필요성이 있어요. 퇴근 후 힘들겠지만 30분씩만 투자하시면 회사에서 야근 없이 30분 일찍 퇴근할 수 있는 날이 올 거예요! 그때까지 파이팅!
▼▼▼함게 읽으면 좋은 정보▼▼▼
업무 자동화는 나의 가장 큰 무기가 되어줄 것이다.
댓글