1. CurrentRegion의 주소 확인하기
CurrentRegion(현재 영역)의 설정 범위를 알아보기 위해 VB Editor를 실행한 후 코드를 작성해 보겠습니다.
가. 코드 작성
모듈을 삽입한 다음
아래와 같이 코드를 작성합니다.
Sub cur_range_addr()
Dim cur_range As Range
Set cur_range = Range("a2").CurrentRegion
MsgBox cur_range.Address
End Sub
나. 코드 설명
Dim cur_range As Range : 현재 영역을 저장하기 위한 변수 cur_range를 Range(범위) 형식으로 선언합니다.
Set cur_range = Range("a2").CurrentRegion :
- 일반적인 변수는 cur_range = 4 식으로 변수명 = 값 식으로 값을 대입하지만
- 범위는 Set 범위변수명 = 값 식으로 값을 대입합니다.
따라서 위 명령문은 cur_range 변수명에 A2셀의 현재 영역을 저장시키는 것입니다.
MsgBox cur_range.Address : 메시지 창에 cur_range.Address라고 현재 영역의 주소를 표기하라는 명령문입니다.
- VBA에서는 속성을 표시할 때 객체, 범위 등 다음에 .(점)을 찍은 다음 속성을 적습니다.
다시 말해 cur_range의 주소(Address) 속성을 구하려면 .(점)을 찍은 다음 Address라고 기재합니다.
이때 cur_range 다음에 .(점)을 찍고 addr이라고 입력하면 Address가 표시되므로 탭 키를 눌러 단어를 완성하면 편리합니다.
다. 코드 실행
코드를 실행하면 $A$2:$E$14라고 표시됩니다.
라. 주소 형식 바꾸기
기본값이 절대 참조 형식인데,
괄호 안의 인수가 첫 번째가 행, 두 번째가 열이고, 1이 절대참조, 0이 상대참조이며, 기본값이 1이므로 생략하면 행, 열 모두 절대참조 형식으로 표시합니다.
Address(0,0)이라고 괄호 안에 행과 열참조 형식을 모두 상대참조 형식으로 지정하면 아래와 같이 A2:E14라고 상대참조형식으로 표시됩니다.
그러나, Address(1,0)이라고 입력하면 행만 절대참조 형식으로 지정하면 A$2:E$14와 같이 행은 절대참조 형식이고, 열은 상대참조 형식인 혼합참조형식으로 표시됩니다.
2. CurrentRegion 내 주소 확인하기 1
CurrentRegion은 일반적인 주소(예, A1, C2 등)뿐만 아니라, 현재 영역은 범위 내에서 새로운 주소를 갖습니다.
현재 영역에서 왼쪽 맨 위가 A1이고, 그 오른쪽은 B1, A1셀의 아래는 A2셀 식입니다.
다시 말해 위 화면에서 Gapdori의 Kor 성적 75는 워크시트를 기준으로 하면 B3셀이지만,
현재 영역을 기준으로 하면 A2셀이 A1, B2셀이 B1, B3셀은 B2셀이 됩니다.
코드를 이용해 확인해 보겠습니다.
가. 코드 작성
아래와 같이 코드를 작성합니다.
Sub cur_range_addr2()
Dim cur_range As Range
Set cur_range = Range("a2").CurrentRegion
MsgBox cur_range.Range("a1")
MsgBox cur_range.Range("b2")
End Sub
나 코드 설명
Sub 프로시저 안의 Set문까지는 동일하고,
MsgBox에 표시하는 내용만 다릅니다.
MsgBox cur_range.Range("a1") : cur_range(현재 영역)의 A1셀 값을 메시지창에 표시하라는 명령입니다.
- cur_range 다음에 점을 찍고 Range("a1")을 입력하면 cur_range의 A1셀의 값이라는 속성을 가리키게 됩니다.
그리고, cur_range.Range("a1") 다음에 .value 속성이 있는데 기본 값이 .value이기 때문에 생략한 것입니다.
그다음 MsgBox cur_range.Range("b2")은 cur_range영역의 b2셀의 값을 메시지 창에 표시하라는 명령입니다.
다. 코드 실행
위 코드를 실행하면 메시지 창 안에 CurrentRegion을 기준으로 한 A1셀의 값 Name이 표시되고,
메시지 창의 확인 버튼을 클릭하면 CurrentRegion의 B2셀의 값 75가 표시됩니다.
※ cur_range의 주소를 Range를 이용해 셀 주소로 입력할 수도 있고, Cells를 사용해 row_index, col_index를 입력하거나, 아니면 Cells를 생략하고 row_index와 col_index만 지정할 수도 있음
MsgBox cur_range.Cells(1, 1) MsgBox cur_range.Cells(2, 2) |
MsgBox cur_range.Cells(1, 1) MsgBox cur_range.Cells(2, 2) |
MsgBox cur_range(1, 1) MsgBox cur_range(2, 2) |
3. CurrentRegion의 행, 열 수 알아내기
가. 코드 작성
현재 영역의 행 수와 열 수를 구하는 명령문은 아래와 같습니다.
Sub cur_range_addr3()
Dim cur_range As Range
Set cur_range = Range("a2").CurrentRegion
MsgBox cur_range.Rows.Count
MsgBox cur_range.Columns.Count
MsgBox cur_range.Cells.Count
End Sub
나. 코드 설명
MsgBox cur_range.Rows.Count :
- cur_range.Rows.Count로 cur_range(현재 영역)의 rows(행 들)의 count(개수)이므로 행 수를 구해주며,
MsgBox 명령이 있으므로 메시지 창에 행 수를 표시합니다.
MsgBox cur_range.Columns.Count : 현재 영역의 열 수를 메시지 창에 표시합니다.
MsgBox cur_range.Cells.Count : 현재 영역의 총 셀의 개수를 메시지 창에 표시합니다.
다. 코드 실행
코드를 실행하면 현재 영역의 행수를 표시하고, 확인 버튼을 누르면
열 수를 표시합니다. 확인 버튼을 누르면
총 셀의 개수를 표시하고 확인 버튼을 누르면 매크로 실행을 종료합니다.
'EXCEL - VBA' 카테고리의 다른 글
CurrentRegion 속성을 이용한 합계 등 계산(2) (0) | 2023.02.06 |
---|---|
CurrentRegion 속성을 이용한 합계 등 계산(1) (0) | 2023.02.03 |
CurrentRegion(선택된 셀과 연속적으로 연결된 사각 영역) 선택(2) - VBA (0) | 2023.01.26 |
CurrentRegion(선택된 셀과 연속적으로 연결된 사각 영역) 선택(1) - 워크 시트 (0) | 2023.01.25 |
Aggregate(옵션 적용 집계) 함수(4) - Countif함수로 k값 지정하기 (0) | 2023.01.10 |