VBA 프로그램을 하다 보면 자주 사용하는 코드들이 있습니다. 이런 코드들 중에 하나가 셀 영역을 구하는 함수입니다. 사용자 정의 함수나 매크로로 작업할 때 제일 먼저 해야 할 일이 엑셀에 있는 값을 가져오는 것이니까요. 그러려면 워크시트에서 값이 차지하고 있는 영역을 알아야 합니다. 그 때 사용하는 함수를 알아 보겠습니다.
▼ 샘플 화면은 아래와 같습니다. 그림으로 데이터 영역은 A1 ~ C8 입니다.
▼ 워크시트에서 사용하고 있는 데이터 영역을 가져오기 위한 함수는 속성은 ActiveSheet.UsedRange 입니다. 리턴 받은 영역 객체에서 Address() 함수를 이용하면 절대 주소를 알아 낼 수 있습니다. 아래 소스는 이렇게 알아 온 절대 주소를 메시지 박스에 출력하는 것입니다.
Sub RangeInfo() Msgbox ActiveSheet.UsedRange.Address() End Sub |
▼ 위의 소스를 실행한 결과 입니다. 예상했던 것과 같은 결과를 출력하고 있죠. 단지 절대값으로 표현되어서 나오네요.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀(Excel) VBA – 워크시트(Worksheet) 개체 시트 관리하기 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣는 방법 ▶ 엑셀 VBA 시트 테두리 선 그리는 방법 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 |
¤ R1C1 참조 방식 영역 알아 오기 |
▼ R1C1 참조 방식은 매크로 프로그램에서 자주 사용하는 방식입니다. 기본적인 셀의 위치 참조는 A1 방식을 사용합니다. A 는 열을 알파벳순으로 1 은 행을 숫자로 표현해서 위치를 지정하죠. R1C1 은 “R” 이 행을, “C” 가 열을 나타냅니다. 그러니까 R 뒤에 있는 수가 행 번호 이고 C 뒤에 있는 수가 열 변호가 되는 것이죠. R 은 Row, C 는 Column 의 줄임 말입니다.
A1 방식과 같이 영역을 가져오는 함수는 Address() 를 사용하는데 R1C1 방식으로 계산한 영역값을 가져오기 위해 상수를 넘기고 있습니다. 상수 값은 ReferenceStyle 변수에 xlR1C1 을 넘기면 됩니다.
Sub RangeInfoR1C1() Msgbox ActiveSheet.UsedRange.Address(ReferenceStyle:=xlR1C1) End Sub |
▼ 아래 그림은 위의 소스를 실행한 결과 입니다. A1 을 R1C1 으로 보기 때문에 데이터의 오른쪽 끝인 C3 는 C -> R8, 3 -> C3 가 됩니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀(Excel) VBA – 워크시트(Worksheet) 개체 시트 관리하기 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣는 방법 ▶ 엑셀 VBA 시트 테두리 선 그리는 방법 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 16진수 > 10진수, 10진수 > 16진수 헥사값 알아오기 (2) | 2023.03.06 |
---|---|
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 (0) | 2023.03.02 |
엑셀 VBA 단위 변환 사용자 정의 폼 만들기 (0) | 2023.03.01 |
엑셀 VBA 레지스트리 키값 읽어오기 (1) | 2023.02.24 |
엑셀 VBA 매개변수 전달 방식 ByRef, ByVal 의 차이점 (0) | 2023.01.13 |
엑셀 VBA 반복문 For Next, For Each Next 사용하기 (0) | 2023.01.11 |
엑셀 VBA 아티클 전체 목록 (12) | 2022.12.23 |
엑셀 VBA 문서에 포함된 하이퍼링크 한번에 삭제하기 (1) | 2022.11.30 |