[VBA 매크로] CurrentRegion으로 데이터 영역 선택하기
엑셀, VBA, 파워쿼리/VBA 매크로

[VBA 매크로] CurrentRegion으로 데이터 영역 선택하기

by Jongg 2023. 10. 11.
728x90

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로 코드를 수정해야 합니다.

즉, 데이터 영역이 바뀔 때마다 코드를 수정해야 하는 문제점이 발생하는 것입니다.

 

728x90

 

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 코딩] 엑셀 매크로로 시트 생성하기

[엑셀 VBA 코딩] 시트 값복사/모든 시트 값복사 매크로 VB 코드 해석: For 구문 등

[엑셀 VBA/매크로] 매크로 기록과 VB 편집기 (값복사 매크로 첨부)

[엑셀 기능] 엑셀 주요기능 세 가지: 스프레드시트, 매크로/VBA, 파워쿼리

[엑셀 VBA/매크로] 시작하기 전 엑셀 설정하기 

728x90

댓글