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

엑셀 Vba 조건문 사용하는 3가지 방법

by 교육의 기울기 2024. 11. 18.
반응형

VBA 조건문을 작성하려면 3가지 코드를 알고 있어야 합니다.


목차

    If Then 가장 기본적인 조건을 위한 코드

    IF는 조건문에서 가장 많이 쓰이는 구문입니다. 기본 형식은 위와 같은 형식을 가지고 있습니다.   If 내부의 조건이 참일 경우, 조건문 내부 코드를 실행합니다.  주의 하실점이 있다면, If 조건문이 끝날때는 항상 "End If"을 적어주셔야 합니다.


    If 조건문의 기본 공식은 아래와 같다.

    If 조건 then
    
       내부(조건이 참일시 실행함) 
    
    End if

    Sub Simple_IF()
        
        If Range("B3").Value <> "" Then 
    
            Range("C3").Value = Range("B3").Value
        
        End If
        
        'B3의 값이 ""가 아닐경우 > C3의 값에 B3의 값을 할당한다.
    
    
        If Range("B4").Value > 0 And Range("B4").Value <= 100 Then
            Range("C4").Value = Range("B4").Value
    
    
        End If
        'B4의 값이 0 초과, 100이하인 경우 > C4에 B4의 값을 할당한다.
        
    End Sub

     

    위는 조건문예시 코드입니다. B3셀을 논리 연산자를 통해, 참/거짓을 판별한 후, 내부코드를 실행합니다. 여기서 알수있는것은, if의 조건을 만들때, And, Or 등과 같은 논리연산자을 사용 가능하다는 것입니다. 즉, "여러가지 조건이 참일때, 실행한다." 같은 조건도 만들수있습니다.

     

    Vba Case, 다중조건

    만약 여러가지 조건을 많이 사용해야 하는경우는 어떨까요? 예를들어 점수에 따라 키워드가 입력되는 조건문을 생각해봅시다. 100점은 perfect, 90점은 excellent등 여러가지 결과가 나오게되는데, 이것을 일반 if then 조건문으로 작성하게되면, 쓸데없이 코드가 매우 길어질것입니다. 이럴때 사용할수있는것이, Case 입니다. 

    아래 예시코드를 읽어보세요.


    Select Case 표현식
        Case 값1
            실행 코드1
        Case 값2
            실행 코드2
        Case Else
            실행 코드3
    End Select
    
    
    1. Select Case 표현식 : 평가할 표현식을 지정합니다. (숫자, 문자열 등)
    이 값은 각 Case 절과 비교됩니다.
    2. Case 값 : 특정 값이나 조건에 해당하는 경우 실행할 코드 블록입니다.
    값 대신 조건 범위도 사용할 수 있습니다. 예: Case 1 To 5 또는 Case Is > 10.
    3. Case Else (선택 사항)
    위의 어떤 Case에도 해당하지 않는 경우 실행되는 기본 코드 블록입니다.
    4. End Select : Select Case 문이 종료됨을 나타냅니다.

     

     

    실제 case예시


    Case를 이용해서 조건을 처리하면 아래와 같은 장점이 있습니다.

     

    • 여러 조건을 처리할 때 If...ElseIf 구조보다 가독성이 좋습니다.
    • 조건이 많아질수록 코드가 더 간결해집니다. 
    • 범위 또는 여러 값을 포함한 조건을 쉽게 처리할 수 있습니다.

    GoTo 구문, 오류처리

    VBA의 GoTo 문은 코드 실행을 특정 위치로 이동시키는 데 사용됩니다. 주로 에러 처리나 간단한 분기 처리를 위해 사용되지만, 남용하면 코드가 복잡해지고 유지보수가 어려워질 수 있습니다.

    Goto 코드의 예시입니다.


    Sub ErrorHandlingExample()
        On Error GoTo ErrorHandle
        
        ' 에러가 발생할 수 있는 코드
        Dim result As Double
        result = 10 / 0  ' 에러 발생
        Exit Sub
        
    ErrorHandle:
        MsgBox "에러가 발생했습니다: " & Err.Description
    End Sub

     

    Sub Out_GoTo()
        '
        Range("C3").Value = ""
        ' 코드실행전, 셀의 값을 초기화시켜둔다.
        If IsError(Range("B3")) Then GoTo Out
        Range("C3").Value = Range("B3").Value
        Exit Sub
        'exit sub를 적어줘야 아래에 있는 코드가 실행이 되지않는다.
    Out:
        Range("C3").Value = "You have an error in the cell"
    
    End Sub

     

    반응형

    댓글