이전 글에서 SpecialCells 속성에 대해 알아보았습니다. 이번 글에서는 Offset과 Resize 속성에 대해 알아보겠습니다.
VBA Range의 SpecialCells 속성 이용하기
1. Offset 속성
참조 셀이나 영역을 이동시키고자 할 때 Offset 속성을 사용합니다.
사용하는 방법은 다음과 같습니다.
Offset (행 방향으로 이동할 셀 개수, 열 방향으로 이동할 셀 개수)
참조 셀 하나가 선택되어있거나 범위 선택으로 여러 셀이 선택되어 있는 경우 그 위치를 원하는 만큼 이동시키고자 할 때 Offset 속성을 위와 같이 사용합니다.
2. Resize 속성
참조 범위를 확장하려고 할 때 Resize 속성을 사용합니다.
사용하는 방법은 다음과 같습니다.
Resize (행 방향으로 확장할 셀 개수, 열 방향으로 확장할 셀 개수)
Resize 속성은 하나의 셀이나 범위로 선택된 셀을 참조할 때 그 선택 범위를 행과 열 방향으로 지정한 셀 개수만큼 확장할 때 위와 같이 사용합니다.
3. 예제로 확인
이번 예제도 이전 SpecialCells에서 사용하였던 가계부를 사용하겠습니다. 이제 엑셀에서 VBE 창을 열고 모듈을 추가합니다. 그리고, 다음과 같이 코드를 작성합니다.
Public Sub Offset_sam()
Dim data As Range
Set data = Range("B2").CurrentRegion
data.Offset(1, 0).Select
End Sub
코드를 실행하시면 가계부에서 머리글을 제외한 나머지 부분이 선택됩니다.
Set data = Range("B2").CurrentRegion는 data 변수에 B2셀에 연속적으로 데이터가 입력되어 있는 범위의 셀들을 입력합니다.
data.Offset(1, 0).Select는 data에 저장되어 있는 데이터 범위를 행 방향으로 한 개의 셀을 이동하라는 명령이므로 선택영역이 머리글이 제외된 3행부터 18행이 선택됩니다.
여기서, 18행에는 데이터가 입력되어 있지 않으므로 Resize 속성을 사용하여 이를 제외시키겠습니다.
이제 코드를 다음과 같이 수정합니다.
Public Sub Offset_sam()
Dim data As Range
Dim r As Integer
Set data = Range("B2").CurrentRegion
r = data.rows.Count - 1
data.Offset(1, 0).Resize(r).Select
End Sub
정수형 변수 r을 선언하고 data 변수에 입력되어 있는 셀 영역의 행 개수를 구하여 1을 빼서 변수 r에 입력하도록 하였습니다. ( r = data.rows.Count - 1 )
그리고, Offset 속성 다음에 매개변수 r을 준 Resize 속성을 추가하였습니다.
이 코드를 실행하면 머리글이 입력되어있는 2행을 제외한 나머지 데이터 영역이 선택됩니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA Range의 NumberFormat 속성에 대해 알아보기 (0) | 2021.12.11 |
---|---|
VBA Range의 End 속성 이용하기 (0) | 2021.12.11 |
VBA Range의 SpecialCells 속성 이용하기 (0) | 2021.12.11 |
엑셀 데이터를 Table로 사용하는 것을 VBA로 구현 - CurrentRegion (0) | 2021.10.20 |
VBA 셀(또는 범위) 지정 - Range, Cells (0) | 2021.10.19 |