본문 바로가기

엑셀/VBA

VBA Range의 OFFSET과 RESIZE 속성 이용하기

반응형

이전 글에서 SpecialCells 속성에 대해 알아보았습니다. 이번 글에서는 Offset과 Resize 속성에 대해 알아보겠습니다.

 

VBA Range의 SpecialCells 속성 이용하기

 

VBA Range의 SpecialCells 속성 이용하기

이전 글에서 Range에 대해 알아보았습니다. 이번에는 Range의 속성 중에서 SpecialCells에 대해 알아보겠습니다. VBA 엑셀 개체 다루기 - Range VBA 엑셀 개체 다루기 - Range VBA는 사용자가 오피스 프로그램

mr-johndoe.tistory.com

 

 

 

 

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행을 제외한 나머지 데이터 영역이 선택됩니다.

 

반응형