엑셀 범위 초기화 :: ClearRange 명령문 사용법

지정한 범위의 값을 초기화하는 ClearRange 함수의 사용법과 동작원리를 살펴봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 04. 25. 17:45
URL 복사
메모 남기기 : (3)

엑셀 범위 초기화 :: ClearRange 명령문 사용법 총정리

엑셀 ClearRange 명령문 목차 바로가기
요약

엑셀 ClearRange 명령문은 엑셀의 특정 범위의 값을 초기화하는 명령문입니다.

명령문 구문
ClearRange 범위1, 범위2, ...
사용된 인수 및 변수 알아보기
인수 설명
범위
[Variant, 선택인수]
값을 초기화 할 범위입니다. 범위(Range)로 직접 입력하거나, 범위를 문자로 입력할 수 있습니다. 범위 기본값은 "초기화범위" 입니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.


상세 설명

엑셀 ClearRange 명령문은 엑셀 특정 범위의 값을 초기화하는 명령문입니다. 범위의 셀 병합여부에 상관없이 값을 초기화 할 수 있습니다. 범위의 기본값은 "초기화범위" 입니다. 따라서 ClearRnage 명령문을 인수 없이 사용할 경우, 값을 초기화 할 대상 범위를 "초기화범위" 라는 이름정의범위로 추가한 뒤 명령문을 사용합니다.

엑셀 범위 초기화 초기화범위
값을 지울 범위를 '초기화범위'라고 지정한 뒤 명령문을 실행합니다.
실전 사용 예제
  1. "초기화범위"라는 이름정의범위 값을 초기화
    ClearRange
    '"초기화범위"라는 이름정의범위의 값을 초기화합니다.
  2. "직원명부"라는 시트의 A1:A10 범위를 초기화
    ClearRange ThisWorkBook.WorkSheets("직원명부").Range("A1:A10")
    '직원명부 시트의 "A1:A10" 범위 값을 초기화합니다.
  3. 여러 범위를 동시에 초기화
    ClearRange "초기화범위", Range("A1:A10"), Range("범위1")
    '초기화범위, A1:A10 범위 등 여러 범위 값을 초기화합니다.

엑셀 범위 초기화, ClearRange 명령문 동작원리

ClearRange 명령문 전체 코드
Sub ClearRange(ParamArray Rngs() As Variant)
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
'▶ ClearRange 함수
'▶ 지정한 범위 값을 초기화합니다. 범위를 직접 지정하거나 범위를 문자로 입력할 수 있습니다.
'▶ 인수 설명
'_____________Rngs  : 값을 초기화할 범위입니다.
'▶ 사용 예제
'ClearRange "범위1", Range("A1:A10")
'###############################################################
 
Dim Rng As Variant: Dim Rs As Variant
Dim r As Range: Dim a As Range: Dim v As Variant: Dim vs As Range
Dim lngType As Long
 
Application.ScreenUpdating = False
 
Set r = Selection
If IsMissing(Rngs) Then Rngs(0) = "초기화범위"
 
If UBound(Rngs()) > 0 Then
ClearArrRngs:
    For Each Rng In Rngs
        If IsObject(Rng) Then
            lngType = 0
            For Each a In Rng
            GoTo ClearRng
ClearNextRng:
            Next
        Else
            If IsArray(Rng) Then
            lngType = 1
                For Each v In Rng
                    If IsObject(v) Then a = v Else Set a = Range(v)
                    GoTo ClearRng
ClearNextMixedRng:
                Next
            Else
            lngType = 4
                Set a = Range(Rng)
                GoTo ClearRng
ClearNextMixedStr:
            End If
        End If
    Next
Else
    If IsObject(Rngs(0)) Then
        Set a = Rngs(0)
        lngType = 3
        GoTo ClearRng
    Else
        If IsArray(Rngs) Then GoTo ClearArrRngs
        If InStr(1, ",", CStr(Rngs(0))) > 0 Then
            lngType = 2
            vs = Split(CStr(Rngs(0)), ",")
            For Each Rng In vs
                Set a = Range(Trim(Rng))
                GoTo ClearRng
ClearNextStr:
            Next
        Else
            Set a = Range(CStr(Rngs(0)))
            lngType = 3
            GoTo ClearRng
        End If
    End If
End If
 
GoTo Finally
 
ClearRng:
a.Parent.Activate
a.Select
Selection.ClearContents
If lngType = 0 Then GoTo ClearNextRng
If lngType = 1 Then GoTo ClearNextMixedRng
If lngType = 2 Then GoTo ClearNextStr
If lngType = 3 Then GoTo Finally
If lngType = 4 Then GoTo ClearNextMixedStr
 
Finally:
r.Parent.Activate
r.Select
Application.ScreenUpdating = True
 
End Sub
명령문 동작원리 단계별 알아보기
  1. 명령문에 사용할 변수를 선언합니다.
    Dim Rng As Variant: Dim Rs As Variant
    Dim r As Range: Dim a As Range: Dim v As Variant: Dim vs As Range
    Dim lngType As Long
  2. 화면 업데이트를 중단하여 명령문 속도를 개선합니다.
    Application.ScreenUpdating = False 
    '... 
    Application.ScreenUpdating = True
  3. 명령문에 지정한 인수가 없을 경우 기본값으로 "초기화범위"를 지정합니다.
    Set r = Selection 
    If IsMissing(Rngs) Then Rngs(0) = "초기화범위"
  4. 인수로 1개 이상이 입력될 경우, 여러 인수를 돌아가면서 범위를 초기화합니다.
    If UBound(Rngs()) > 0 Then
    ClearArrRngs:
        For Each Rng In Rngs
            If IsObject(Rng) Then
                lngType = 0
                For Each a In Rng
                GoTo ClearRng
    ClearNextRng:
                Next
            Else
                If IsArray(Rng) Then
                lngType = 1
                    For Each v In Rng
                        If IsObject(v) Then a = v Else Set a = Range(v)
                        GoTo ClearRng
    ClearNextMixedRng:
                    Next
                Else
                lngType = 4
                    Set a = Range(Rng)
                    GoTo ClearRng
    ClearNextMixedStr:
                End If
            End If
        Next
    Else
  5. 인수로 1개가 입력되었고, 각 범위가 쉼표로 구분되어 있을 경우 범위를 쉼표 기준으로 분리합니다.
        If IsObject(Rngs(0)) Then
            Set a = Rngs(0)
            lngType = 3
            GoTo ClearRng
        Else
            If IsArray(Rngs) Then GoTo ClearArrRngs
            If InStr(1, ",", CStr(Rngs(0))) > 0 Then
                lngType = 2
                vs = Split(CStr(Rngs(0)), ",")
                For Each Rng In vs
                    Set a = Range(Trim(Rng))
                    GoTo ClearRng
    ClearNextStr:
                Next
            Else
                Set a = Range(CStr(Rngs(0)))
                lngType = 3
                GoTo ClearRng
            End If
        End If
    End If
     
    GoTo Finally
  6. 범위를 초기화한 뒤, 인수 입력 조건에 따라 다음 단계로 넘어갑니다.
    ClearRng:
    a.Parent.Activate
    a.Select
    Selection.ClearContents
    If lngType = 0 Then GoTo ClearNextRng
    If lngType = 1 Then GoTo ClearNextMixedRng
    If lngType = 2 Then GoTo ClearNextStr
    If lngType = 3 Then GoTo Finally
    If lngType = 4 Then GoTo ClearNextMixedStr
  7. 명령문을 종료합니다.
    Finally:
    r.Parent.Activate
    r.Select
     
    End Sub
5 3 투표
게시글평점
3 댓글
Inline Feedbacks
모든 댓글 보기
3
0
여러분의 생각을 댓글로 남겨주세요.x