본문 바로가기
  • 반가워요 : )
엑셀

엑셀 vba with을 쓰는 여러가지 경우들

by 교육의 기울기 2024. 8. 10.
반응형

VBA 코딩을 더 효율적으로: With와 End With 구문

VBA(Visual Basic for Applications)에서 With와 End With 구문은  코드를 더 간결하게 만들고, 작성 및 유지보수를 빠르게 할 수 있도록 돕습니다. 이 글에서는 With-End With 구문을 활용해 반복적인 코드를 최적화하는 방법과, 실질적인 예제를 통해 그 유용성을 살펴보겠습니다.

 

목차

    With-End With구문의 핵심 장점

    1. 코드 간소화 : 반복되는 구문을 줄여 코드를 깔끔하게 정리할 수 있습니다.

    2. 성능 향상 :코딩에서 점(`.`) 연산자의 사용을 최소화하면 코드 실행 속도가 향상됩니다.

    3. 유지보수 용이 : 수정 사항이 생길 경우, 한 번의 수정으로 전체 코드를 업데이트할 수 있습니다.

    With 코드 사용 전후 비교

    다음은 With-End With 구문 사용 전후의 코드입니다. 동일한 객체(`MyRange.Font`)를 반복적으로 호출할 필요가 없으며, 필요한 속성만 간단히 지정하면 됩니다.


    **Before**  
    ```vba
    MyRange.Font.Name = "Arial"
    MyRange.Font.Size = 12
    MyRange.Font.Bold = True
    ```
    
    **After**  
    ```vba
    With MyRange.Font
        .Name = "Arial"
        .Size = 12
        .Bold = True
    End With

    실제 예제: 데이터 서식 변경 자동화

    이번 예제에서는 VBA를 사용해 데이터 범위의 서식을 자동으로 변경하고, 새 데이터를 추가해도 자동으로 적용되도록 만들겠습니다.

    1. 준비 단계
    - VBA 편집기(Alt + F11)를 열고, 새 모듈을 추가합니다.


    2. 서식 변경을 위한 Sub 프로시저 작성
    이 코드는 다음을 수행합니다:
    -. `A10` 셀부터 데이터가 끝나는 위치까지의 범위를 설정합니다.
    -. `With-End With` 구문을 사용해 폰트를 Arial로 변경하고, 크기를 12로 설정하며, Bold 속성을 활성화합니다.


    ```vba
    Sub With_Change_Font()
        Dim MyRange As Range
        ' 데이터 범위 설정
        Set MyRange = Range("A10", Cells(Rows.Count, 1).End(xlUp))
    
        ' 서식 변경
        With MyRange.Font
            .Name = "Arial"
            .Size = 12
            .Bold = True
        End With
    End Sub
    ```


    3. Reset 기능 추가


    기존 데이터를 초기 상태로 되돌리는 **Reset_Font** 프로시저도 추가합니다.

    이 프로시저는 폰트를 기본값(Calibri, 11pt, Bold 비활성화)으로 되돌립니다.


    ```vba
    Sub Reset_Font()
        Dim MyRange As Range
        Set MyRange = Range("A10", Cells(Rows.Count, 1).End(xlUp))
    
        With MyRange.Font
            .Name = "Calibri"
            .Size = 11
            .Bold = False
        End With
    End Sub
    ```

    4. 아래는 시트의 속성을 바꾸는 예시입니다.


    Sub Format_Cells()
        With Sheets("Sheet1").Range("A1:D10").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = 0.8
        End With
    End Sub

    결론

    With-End With 구문은 반복적인 작업을 간소화하고, 코드 실행 속도를 높이며, 유지보수를 용이하게 합니다. 특히 객체의 속성이나 메서드를 다룰 때 유용하며, 코드 가독성을 높이는 데도 큰 도움이 됩니다. 

    반응형

    댓글