Selection 속성의 Resize 함수는 주로 사용자가 선택한 영역을 재조정해서 데이터를 추출할 때 사용합니다. Resize 함수로 영역의 확대/축소가 가능하기 때문입니다. 또는 제목행과 열이 포함된 영역에서 데이터만 추출하고 싶을 때 많이 이용합니다.
◎ 1. 매크로 함수 생성하기 |
▼ 먼저 작업 시작을 알리는 버튼을 만들어서 실행할 매크로 함수와 연결하겠습니다. 개발 도구 탭 > 삽입 > 양식 컨트롤 메뉴에서 버튼을 찾아 시트에 추가합니다.
▼ 다음 오른쪽 마우스를 눌러서 매크로 지정 메뉴를 선택합니다.
▼ 매크로 지정 팝업창이 뜨면 "매크로 이름" 란에 함수명에 해당하는 이름을 넣고 오른쪽 사이드에 새로 만들기 버튼을 클릭합니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA 영역(Range)을 배열(Array) 로 변경하기 ▶ 엑셀 VBA 영역에서 빈 셀, 행 열 삭제하기 ▶ 엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 |
◎ 2. 영역 확대 및 축소 |
▼ 이제 버튼과 연결할 함수를 작성해 보겠습니다. 함수 내에서 사용할 속성은 Selection 입니다. Selection 은 현재 선택된 범위 또는 항목을 참조하며 값을 조작하는 데 사용합니다. 함수 형식은 Selection.Resize(행 크기, 열 크기) 입니다. 함수의 소스 내용은 다음과 같습니다.
Sub 데이터추출()
Dim rowNum As Integer
Dim colNum As Integer
rowNum = Selection.Rows.Count
colNum = Selection.Columns.Count
'' 행/열
Selection.Resize(rowNum - 1, colNum - 1).Select
End Sub
▼ 위에서 작성한 함수를 실행해 보겠습니다. 엑셀 시트에서 “데이터 추출” 버튼을 누르면 기존 선택한 영역에서 행과 열을 하나씩 줄인 결과를 보여줍니다.
▼ Resize 파라미터를 행과 열로 구분해서 두 함수를 사용할 수도 있습니다. "열" 을 줄일 경우 행 값이 들어가는 매개변수는 빈칸으로 둬야 합니다. 함수 내용은 아래와 같습니다.
Sub 데이터추출()
Dim rowNum As Integer
Dim colNum As Integer
rowNum = Selection.Rows.Count
colNum = Selection.Columns.Count
'' 개별 행/열 줄이기
Selection.Resize(rowNum - 1).Select
Selection.Resize(, colNum - 1).Select
End Sub
▼ 이것으로 Resize 의 사용법은 알았습니다. 이제 제목행을 제외한 나머지 데이터 영역만 선택하기 위해서는 어떻게 해야 할까요? 행을 하나 줄이고 전체를 아래로 한 칸 이동하면 되겠죠. 선택한 영역을 전체적으로 이동하기 위해서는 Offset 함수를 사용해야 합니다. Offset 의 첫 번째 매개변수는 행, 두 번째는 열을 뜻합니다. 입력한 숫자만큼 아래와 왼쪽으로 이동합니다.
Sub 데이터추출()
Dim rowNum As Integer
Dim colNum As Integer
rowNum = Selection.Rows.Count
colNum = Selection.Columns.Count
'' Offset 을 이용해서 선택 영역 전체를 이동
Selection.Offset(1, 0).Resize(rowNum - 1).Select
End Sub
▼ 결과는 표 전체에서 상단 타이틀 영역을 제외한 나머지 데이터만 선택이 되도록 작업을 완료했습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA 영역(Range)을 배열(Array) 로 변경하기 ▶ 엑셀 VBA 영역에서 빈 셀, 행 열 삭제하기 ▶ 엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 리스트 멀티 선택해서 추가 삭제하기 (0) | 2023.03.25 |
---|---|
엑셀 VBA 반복문 이용 컨트롤 한번에 제어하기 (0) | 2023.03.25 |
엑셀 VBA Option Explicit 문 변수선언 에러 적용하기 (1) | 2023.03.20 |
엑셀 VBA 모듈 소스 다른 통합 문서에 복사하기 (0) | 2023.03.17 |
엑셀 VBA 문자가 포함된 숫자만 합치기 (0) | 2023.03.07 |
엑셀 VBA 16진수 > 10진수, 10진수 > 16진수 헥사값 알아오기 (2) | 2023.03.06 |
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 (0) | 2023.03.02 |
엑셀 VBA 단위 변환 사용자 정의 폼 만들기 (0) | 2023.03.01 |