엑셀 VBA에서 CurrentRegion 과 UsedRange 는 데이터 범위를 자동으로 감지하여 작업할 때 유용합니다.
1. CurrentRegion vs UsedRange 차이점
개체
|
설명
|
사용 예시
|
CurrentRegion
|
현재 선택된 셀을 포함한 연결된 데이터 범위
|
표 또는 특정 데이터 블록을 선택할 때
|
UsedRange
|
워크시트에서 사용된 모든 셀 범위
|
워크시트에서 데이터가 입력된 영역 확인
|
📌 CurrentRegion은 빈 행이나 빈 열을 만나면 멈춤
📌 UsedRange는 워크시트에서 데이터가 포함된 전체 범위를 반환
2. CurrentRegion 사용법
📌 현재 셀의 데이터 블록 선택
Sub 현재_영역_선택()
ActiveCell.CurrentRegion.Select
End Sub
|
📌 현재 선택된 셀을 포함한 데이터 블록을 자동으로 선택
📌 빈 행 또는 빈 열이 나오면 범위가 멈춤
📌 현재 영역의 데이터 개수 확인
Sub 현재_영역_행열_개수()
Dim rng As Range
Set rng = ActiveCell.CurrentRegion
MsgBox "행 개수: " & rng.Rows.Count & vbNewLine & "열 개수: " & rng.Columns.Count
End Sub
|
📌 .Rows.Count → 현재 영역의 행 개수
📌 .Columns.Count → 현재 영역의 열 개수
📌 현재 영역에서 특정 값 찾기
Sub 현재_영역_값_찾기()
Dim rng As Range
Dim cell As Range
Set rng = ActiveCell.CurrentRegion ' 현재 영역 설정
For Each cell In rng
If cell.Value = "특정값" Then
MsgBox "값을 찾았습니다! 위치: " & cell.Address
Exit Sub
End If
Next cell
MsgBox "값을 찾을 수 없습니다."
End Sub
|
📌 현재 영역 내에서 "특정값"을 찾으면 메시지 표시
3. UsedRange 사용법
📌 워크시트에서 사용된 범위 선택
Sub 사용된범위_선택()
ActiveSheet.UsedRange.Select
End Sub
|
📌 워크시트에서 데이터를 포함한 전체 영역을 선택
📌 사용된 범위의 첫 번째 행 & 마지막 행 찾기
Sub 사용된범위_첫마지막_행()
Dim rng As Range
Dim firstRow As Long, lastRow As Long
Set rng = ActiveSheet.UsedRange
firstRow = rng.Row
lastRow = rng.Rows(rng.Rows.Count).Row
MsgBox "첫 번째 행: " & firstRow & vbNewLine & "마지막 행: " & lastRow
End Sub
|
📌 .Row → 첫 번째 행 번호
📌 .Rows(rng.Rows.Count).Row → 마지막 행 번호
📌 워크시트에서 사용된 범위를 지우기
Sub 사용된범위_지우기()
ActiveSheet.UsedRange.ClearContents
End Sub
|
📌 워크시트에서 입력된 값만 삭제 (서식은 유지됨)
📌 워크시트에서 사용된 범위 초기화 (완전 삭제)
Sub 사용된범위_완전삭제()
ActiveSheet.UsedRange.Delete
End Sub
|
📌 워크시트의 모든 데이터를 삭제하고 서식도 초기화
4. CurrentRegion & UsedRange 비교 예제
📌 현재 영역과 사용된 범위 비교
Sub 현재영역_vs_사용된범위()
Dim rng1 As Range, rng2 As Range
Set rng1 = ActiveCell.CurrentRegion
Set rng2 = ActiveSheet.UsedRange
MsgBox "현재영역: " & rng1.Address & vbNewLine & "사용된 범위: " & rng2.Address
End Sub
|
📌 현재 셀의 데이터 블록과 시트 전체 사용된 범위를 비교하여 범위를 메시지로 표시
📝 정리
개체
|
기능
|
특징
|
CurrentRegion
|
현재 셀을 포함한 연속된 데이터 범위 선택
|
빈 행 또는 빈 열을 만나면 멈춤
|
UsedRange
|
워크시트에서 사용된 전체 영역 선택
|
워크시트의 모든 데이터 포함
|
.Rows.Count
|
행 개수 반환
|
|
.Columns.Count
|
열 개수 반환
|
|
.Row
|
첫 번째 행 번호 반환
|
|
.ClearContents
|
값만 삭제 (서식 유지)
|
|
.Delete
|
값 + 서식 삭제
|
|
🔥 CurrentRegion은 특정 데이터 블록을 조작할 때, UsedRange는 시트 전체 데이터를 다룰 때 사용하면 효과적입니다! 🚀