[ 들어가며 ]
Excel VBA로 작업할 때 데이터의 범위를 효율적으로 조작하기 위해서는CurrentRegion
과 UsedRange
속성에 대해 이해하는 것이 중요합니다.
간단하게 설명하면CurrentRegion
은 현재 셀이 포함된 영역을 참조하고UsedRange
는 시트에서 사용된 영역 전체를 참조합니다.
[ CurrentRegion 이란? ]
CurrentRegion
속성은 빈 행과 빈 열로 둘러싸인 범위를 나타냅니다.
이 속성은 특정 셀에서 시작하여 연속적인 셀 블록을 범위로 하고
작업을 수행하는데 유용합니다.
코드와 결과를 보시면 이해가 더 쉽게 될 수 있습니다.
위 그림을 보시면
빨간색 행열을 기준으로 네 개의 표가 있습니다.
빨간색 부분은 값이 들어있지 않은
빈 행과 빈 열입니다.
CurrentRegion
속성은 빈 행과 빈 열로 둘러싸인 범위를 나타낸다고 했습니다.
다음 코드를 보면서 결과를 보겠습니다.
Sub Current_Used()
Sheets(1).Range("A1").CurrentRegion.Select
End Sub
위 코드를 실행하면 아래와 같이
A1셀부터 E8셀 부분이 선택이 됩니다.
빨간색으로 칠해진 빈 행과 열을 넘어서 있는 데이터 범위는
선택하지 못합니다.
예시는 A1셀을 선택하는 것으로 들었지만,
아래에서 선택된 범위의 어떤 셀을 기준으로 해도
결과는 동일하게 나타납니다.
하나의 예시코드를 더 살펴보겠습니다.
Sub Current_Used()
Sheets(1).Range("G4").CurrentRegion.Select
End Sub
이번에는 G4셀을 선택을 해보았습니다.
결과는 아래 그림과 같습니다.
[ UsedRange란? ]
UsedRange
속성은 워크시트에 사용된 모든 셀을 포함하는 범위를 나타냅니다.
데이터가 입력된 맨 첫 번째 셀부터 맨 마지막 셀까지를 범위로 지정합니다.
Sub Current_Used()
Sheets(1).UsedRange.Select
End Sub
CurrentRegion
은 먼저 Range 함수로 셀을 지정하고 CurrentRegion 속성을 사용했지만,UsedRange
는 시트를 지정하고 속성을 사용합니다.
위 코드의 결과입니다.
보시는 봐와 같이 데이터가 시작 셀과 끝 셀을 기준으로
그 안에 있는 모든 셀이 범위로 지정이 되었습니다.
아래 그림과 같이 M22셀에 임의의 값을 추가하고
같은 코드를 실행해 보겠습니다.
보시는 바와 같이 A1셀부터 M22셀까지 범위가 지정이 되었습니다.
[ 간단한 활용 예시 ]
먼저 아래 그림에서 A1셀부터 E8셀까지 입력된 숫자를 모두 더해보겠습니다.
Sub Current_Used()
Dim ws As Worksheet
Dim total As Double
Set ws = Sheets(1)
total = WorksheetFunction.Sum(ws.Range("A1").CurrentRegion)
MsgBox "Total Sum: " & total
End Sub
위 코드를 실행하면
메시지 박스에 1869가 출력이 됩니다.
다음은 시트에 있는 모든 숫자를 더해보겠습니다.
Sub Current_Used()
Dim ws As Worksheet
Dim total As Double
Set ws = Sheets(1)
total = WorksheetFunction.Sum(ws.UsedRange)
MsgBox "Total Sum: " & total
End Sub
위 코드를 실행하면
메시지 박스에 7447이 출력이 됩니다.
다음은 위 그림에서 비어있는 행을 삭제해 보겠습니다.
Sub Current_Used()
Dim ws As Worksheet
Dim rng As Range
Dim i As Long
Set ws = Sheets(1)
Set rng = ws.UsedRange
For i = rng.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(rng.Rows(i)) = 0 Then
rng.Rows(i).EntireRow.Delete
End If
Next i
End Sub
위 코드는UsedRange
속성을 사용해 전체 데이터가 입력된 범위를 잡고
맨 마지막 행부터 검사를 시작합니다.
검사 내용은 해당 행에 데이터가 있는지 없는지를 확인하고
데이터가 없다면 지워버리고
데이터가 있다면 해당 행 바로 위 행을 조사합니다.
이 과정을 반복하며
비어있는 행을 모두 지워버립니다.
위 코드를 실행하면
아래 그림과 같이 결과가 나타납니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA Alt+F11 키가 제대로 동작하지 않을 경우 (0) | 2024.08.14 |
---|---|
엑셀 VBA 버튼으로 값 입력하고, 비활성화 된 버튼 색 바꾸기(버튼 활성화 표시) (0) | 2024.08.09 |
엑셀 VBA 엑셀 파일 실행 시 오늘 날짜를 시트 이름으로하는 시트 자동 생성하기 (0) | 2024.08.07 |
엑셀 VBA 형식을 지정하는 Format 함수(날짜 및 시간 형식 지정) (0) | 2024.08.06 |
엑셀 VBA 형식을 지정하는 Format 함수(숫자 형식 지정) (0) | 2024.08.06 |