엑셀에서 VBA를 사용할 때 OFFSET과 RESIZE 메서드를 함께 활용하면 동적으로 데이터 범위를 참조하고 조정할 수 있어 편리합니다. 이번 글에서는 VBA에서 OFFSET과 RESIZE를 각각 소개하고 함께 사용하는 방법을 소개하겠습니다. 그리고 대표적인 사용예시로 기존 데이터를 지우는 방법을 알아보겠습니다.
RESIZE와 함께 사용되는 Rows.Count 와 Columns.Count는 아래의 글을 참고해주세요.
#1. OFFSET과 RESIZE 매서드 소개
1)OFFSET 메서드의 기본 구문
RangeObject.Offset(RowOffset, ColumnOffset)
- RangeObject: 기준이 되는 셀 또는 범위입니다.
- RowOffset: 기준 셀에서 참조할 셀로 이동할 행의 수입니다. 양수는 아래쪽으로, 음수는 위쪽으로 이동합니다.
- ColumnOffset: 기준 셀에서 참조할 셀로 이동할 열의 수입니다. 양수는 오른쪽으로, 음수는 왼쪽으로 이동합니다.
2) RESIZE 메서드의 기본 구문
RangeObject.Resize(RowSize, ColumnSize)
- RangeObject: 크기를 변경할 셀 또는 범위입니다.
- RowSize: 변경할 범위의 행 수입니다.
- ColumnSize: 변경할 범위의 열 수입니다.
#2. OFFSET과 RESIZE 함께 사용해보기
1) 기본구문
RangeObject.Offset(RowOffset, ColumnOffset). Resize(RowSize, ColumnSize)
2) 활용 예시: A1셀에서 시작하여 B2:D3 범위 참조하기
▲ 직접실행창에 Range("A1").Offset(1,1).Resize(2,3).Select 구문을 입력한 결과입니다. Offset(1,1)은 A1셀에서 아래로 한 행, 오른쪽으로 한 열 움직이라는 명령문입니다. Resize(2,3)은 현재 이동한 범위를 행이 2개, 열이 3개인 범위로 크기를 재조정하는 명령문입니다.
위의 명령문을 실행할 시 Offset 구문으로 인해 A1셀에서 시작하여 B2셀을 참조하게 되며, Resize 구문으로 인해 B2셀을 행 2개, 열 3개짜리 범위로 크기를 재조정하여 B2:D3 범위를 참조하게 됩니다.
#3. 사용예시: 기존 데이터 지우기
Offset-Resize 구문과 Rows.Count, Columns.Count를 사용하면 매크로를 활용하여 표에서 기존 데이터를 지울 수 있습니다.
▲ 위의 표(A1:B6 범위)에서 '이름', '나이' 등 데이터 항목명을 제외한 데이터 범위를 매크로로 지우는 상황을 가정해 봅시다.
Sub test()
Dim tbl As Range '범위 변수 설정
Set tbl = Worksheets(1).Range("A1").CurrentRegion 'tbl 변수를 A1셀에서 연결된 범위(표 범위)로 정의
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Clear
'tbl 범위를 1행 아래로 이동후, 행 수-1 만큼 크기 재조정 후 해당 범위 데이터 지우기(Clear)
End Sub
▲ 위의 구문의 매크로를 만들어서 실행해 봅니다.
▲ 실행결과 데이터 머릿글행 제외하고 나머지 데이터 부분은 지워졌습니다. 이러한 매크로는 기존의 데이터를 지우고, 표를 매크로로 다시 업데이트할 때 활용됩니다.
'엑셀, VBA, 파워쿼리 > VBA 매크로' 카테고리의 다른 글
[VBA 매크로] 매크로 추가기능 파일(xlam 파일)로 매크로 사용하기 (1) | 2024.11.13 |
---|---|
[VBA 매크로] 사용자 정의 함수 만들기 [날짜 형식 변환 함수(YYYYMMDD ↔ YYYY-MM-DD)] (0) | 2024.09.09 |
[VBA 매크로] OFFSET 프로퍼티 소개(셀, 범위 이동) (0) | 2024.06.25 |
[VBA 매크로] Rows.Count와 Columns.Count로 데이터 범위 행 수와 열 수 구하기 (0) | 2024.06.25 |
[VBA 매크로] Resize 프로퍼티로 범위 선택하기(Range.Resize) (0) | 2024.05.14 |
댓글