이전 글에서 엑셀에서 데이터를 작성하여 표로 만들어 데이터 관리를 하는 것을 알아보았었습니다. 표로 관리를 하면 데이터를 추가하거나 삭제하였을 때 함수 등으로 연결된 데이터가 자동으로 업그레이드되는 것이 가능하였습니다. 또한, 표의 임의의 셀을 클릭한 상태에서 Ctrl + A를 클릭하면 데이터 전체가 선택되는 것도 가능하였습니다. 이러한 기능을 VBA에서 실행하려면 CurrentRegion을 사용하여 같은 결과를 얻을 수 있습니다.
VBA 셀(또는 범위) 지정 - Range, Cells
1. CurrentRegion
CurrentRegion은 개체의 속성입니다. 이 속성을 이용하면 일련의 데이터를 편리하게 관리할 수 있습니다.
사용 방법은 다음과 같습니다.
Set 변수 = 개체.CurrentRegion
변수는 Range 형태로 선언을 하고 CurrentRegion은 개체의 속성으로 사용합니다.
2. 예제를 통해 CurrentRegion 확인
엑셀을 여시고 엑셀 시트에 [그림 1]과 같이 작성을 하고 표 전체를 선택하고 "판매량"으로 이름 정의를 합니다. VBE 창을 열고 Module을 생성합니다.
생성한 Module 창에 다음과 같이 코드를 작성합니다.
Public Sub 데이터관리()
Dim data As Range
Dim col As Integer
Dim row As Integer
Dim i As Integer
Set data = Range("판매량").CurrentRegion
col = data.Columns.Count
row = data.Rows.Count
Range("J1") = "행 개수 : "
Range("K1") = row
Range("J2") = "열 개수 : "
Range("K2") = col
data(2, 2).Select
For i = 2 To row
ActiveCell.Offset(i - 2, col - 1) = "= Sum(" & Range(data(i, 2), data(i, col)).Address(0, 0) & ")"
Next
End Sub
Set data = Range("판매량").CurrentRegion
=> 판매량으로 이름 정의한 데이터 범위를 data란 이름으로 지정하였습니다.
col = data.Columns.Count
=> data의 열 개수를 확인하여 변수 col에 입력합니다.
row = data.Rows.Count
=> data의 행 개수를 확인하여 변수 row에 입력합니다.
data(2, 2).Select
=> data의 2행 2열의 셀을 선택합니다. (셀 주소 C3 선택)
ActiveCell.Offset(i - 2, col - 1) = "= Sum(" & Range(data(i, 2), data(i, col)).Address(0, 0) & ")"
=> 직원의 판매 수량 합계를 구하기 위해 data의 맨 끝 열 다음에 Sum 함수 식을 입력합니다.
위의 코드를 실행하시면 각 직원의 판매 수량 합계가 판매량으로 이름 정의한 범위 끝 열 다음에 합계가 계산되는 것을 보실 수 있습니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA Range의 OFFSET과 RESIZE 속성 이용하기 (0) | 2021.12.11 |
---|---|
VBA Range의 SpecialCells 속성 이용하기 (0) | 2021.12.11 |
VBA 셀(또는 범위) 지정 - Range, Cells (0) | 2021.10.19 |
VBA 엑셀 개체 다루기 - Range (0) | 2021.10.18 |
VBA WorksheetFunction 사용 (0) | 2021.10.13 |