VBA 매크로 프로퍼티 중 'CurrentRegion'으로 데이터 영역을 선택 및 설정하는 방법을 소개해 드리겠습니다.
Range 관련해서는 이전 글 [엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전을 참고해주세요.
Range("셀주소").Select 방식의 문제점:
데이터 영역의 변경사항을 반영하지 못 함
▲[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전에서는 A1:B2 영역을 Range("A1:B2").Select 방식으로 선택했습니다. 즉, Range 구문 안에 영역 이름을 입력하는 방식을 사용했습니다.
▲하지만 Range("영역").Select 방식은 데이터 영역이 바뀌어도, 이를 바로 반영하지 못한다는 문제점이 있습니다. 위의 사진처럼 데이터 영역이 B3셀까지 늘어났어도, Range("A1:B2").Select는 A1:B2 영역까지만 선택하게 됩니다. 이를 해결하기 위해서는 Range("A1:B3").Select로 코드를 수정해야 합니다.
즉, 데이터 영역이 바뀔 때마다 코드를 수정해야 하는 문제점이 발생하는 것입니다.
Range("시작셀").CurrentRegion.Select 방식:
데이터 영역 변경사항 반영 가능함
반면, CurrentRegion을 활용하면 데이터 영역의 변경사항까지 바로 반영하는 코드를 짤 수 있습니다.
▲CurrentRegion은 단순하게 설명하자면 엑셀에서의 Ctrl + A 역할을 합니다. 자세하게 설명하자면, 선택된 영역을 기준으로 빈 행, 빈 열로 둘러싸인 영역을 의미합니다.
이러한 특성을 활용하여, Range("시작셀").CurrentRegion.Select으로 변경사항까지 바로 반영하여 데이터 영역을 선택할 수 있습니다.
<코드 설명>
Range("시작셀").CurrentRegion.Select 해석
: 시작셀(Range("시작셀"))을 기준으로 빈 행, 빈 열로 둘러싸인 영역(CurrentRegion)을 선택해라(Select)
▲위의 사진처럼 Range("A1").CurrentRegion.Select으로 코드를 짜면, 데이터영역이 A1:B2이던, A1:B3이던 똑같은 코드로 데이터 영역을 선택할 수 있습니다.
이처럼 CurrentRegion을 사용하면 데이터 영역을 유동적으로 설정할 수 있어서, 저는 개인적으로 Range("데이터 영역") 형식보다 Range("시작셀").CurrentRegion 형식을 더 많이 활용합니다.
관련 글
[엑셀 VBA 코딩] 시트 값복사/모든 시트 값복사 매크로 VB 코드 해석: For 구문 등
[엑셀 VBA/매크로] 매크로 기록과 VB 편집기 (값복사 매크로 첨부)
'엑셀, VBA, 파워쿼리 > VBA 매크로' 카테고리의 다른 글
[VBA 매크로] ListObject 객체로 엑셀 테이블 다루기 (1) | 2024.02.24 |
---|---|
[VBA 매크로] 매크로로 시트 목록 생성하기 (기초버전) (0) | 2023.10.15 |
[VBA 매크로] 현재시트만 따로 저장하기 (0) | 2023.10.10 |
[VBA 매크로] '직접 실행 창' 사용법 #1 간단한 코드 바로 실행해보기 (0) | 2023.10.10 |
[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전 (1) | 2023.10.10 |
댓글