이전 글에서 Range의 속성 중에서 CurrentRegion과 Offset 및 Resize에 대해 알아보았습니다. 이번에는 End 속성에 대해 알아보겠습니다.
엑셀 데이터를 Table로 사용하는 것을 VBA로 구현 - CurrentRegion
VBA Range의 OFFSET과 RESIZE 속성 이용하기
1. End 속성
엑셀 시트에서 데이터가 입력된 마지막 셀로 이동하고자 할 때 단축키 Ctrl 키를 누른 상태에서 방향키를 누르면 방향키 방향으로 연속된 데이터가 입력되어 있는 가장 마지막 셀로 이동합니다. 이런 기능을 VBA에서는 Range의 End 속성을 이용합니다. End 속성은 다음과 같이 사용합니다.
Range.End(인자)
인자에 들어갈 값은 다음 표를 참조하세요.
방향 | 엑셀 단축키 | 인자 |
상 | Ctrl + 방향키 ↑ | xlUp |
하 | Ctrl + 방향키 ↓ | xlDown |
좌 | Ctrl + 방향키 ← | xlToLeft |
우 | Ctrl + 방향키 → | xlToRight |
2. 예제를 통해 확인
Offset 및 Resize 속성에 대해 예제로 사용하였던 가계부를 이용하여 End 속성을 확인해 보고 마지막 행에 Formula 속성을 이용하여 합계 구하는 식을 입력하는 코드를 작성해 보겠습니다. [그림 1]과 같이 엑셀 시트에 가계부 내역이 있고 우측 상단에 합계라는 버튼을 만들었습니다. 버튼 작성은 엑셀 메뉴에서 개발도구-삽입-명령 단추(ActiveX 컨트롤)을 클릭하고 원하는 위치에서 마우스 드래그로 버튼을 생성하시면 됩니다. 그리고, 속성 창에서 Caption에 '합계'를 입력하였습니다.
생성한 버튼을 마우스 왼쪽버튼으로 더블클릭하시면 VBE 창이 열리면서 버튼 클릭에 대한 코드 창이 출력됩니다. 코드 창에 다음과 같이 입력합니다.
Private Sub CommandButton1_Click()
Dim row As Integer
Dim rng As Range
Set rng = Range("B2").CurrentRegion
row = rng.rows.Count
rng.End(xlDown).Select
rng.Cells(row + 1, 3).Formula = "=SUM(D3:D" & row + 1 & ")"
rng.Cells(row + 1, 4).Formula = "=SUM(E3:E" & row + 1 & ")"
rng.Cells(row + 1, 5).Formula = "=D" & row + 2 & " - " & "E" & row + 2
End Sub
rng라는 Range 변수를 선언하고 B2셀과 연속된 데이터들의 범위를 입력하였습니다. (Set rng = Range("B2").CurrentRegion)
row = rng.rows.Count는 rng의 행 개수를 파악하여 그 수량을 정수형 변수 row에 입력합니다.
rng.End(xlDown).Select는 참조 셀 위치를 가장 마지막 행(B열)으로 이동시킵니다.
rng.Cells(row + 1, 3).Formula = "=SUM(D3:D" & row + 1 & ")"는 rng에 입력된 범위의 세 번째 열에서 변수 row에 입력된 행 개수에 1을 더하여 다음 행에 합계 식이 입력되도록 하였습니다.
마찬가지로, 4번째와 5번째 열에도 합계를 구하는 식을 입력하였습니다.
위와 같이 코드를 입력하고 실행을 하시면 데이터가 입력되어 있는 마지막 행의 다음 행 D, E, F 열에 식이 입력되고 합계가 구해집니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA로 셀을 복사, 잘라내기 및 붙여넣기 하기 (0) | 2021.12.15 |
---|---|
VBA Range의 NumberFormat 속성에 대해 알아보기 (0) | 2021.12.11 |
VBA Range의 OFFSET과 RESIZE 속성 이용하기 (0) | 2021.12.11 |
VBA Range의 SpecialCells 속성 이용하기 (0) | 2021.12.11 |
엑셀 데이터를 Table로 사용하는 것을 VBA로 구현 - CurrentRegion (0) | 2021.10.20 |