VBA

VBA Selet Case 문 사용법 및 예제

꼰대 부장 2025. 2. 15. 14:02

1. Select Case 문 및 기본 문법

VBA에서 Select Case 문은 여러 개의 조건을 평가할 때 사용되는 조건문이야. If...ElseIf...Else 문과 비슷하지만, 코드가 더 깔끔하고 가독성이 좋다는 장점이 있습니다.

  • 기본 문법
Select Case 표현식
    Case 값1
        ' 실행할 코드
    Case 값2
        ' 실행할 코드
    Case Else
        ' 위의 조건이 모두 아닐 때 실행할 코드
End Select

여기서 표현식은 비교할 값이고, 각 Case는 그 값이 특정 값과 일치할 때 실행할 코드를 포함합니다.

 

2. 예제 1: 요일에 따라 메시지 출력

아래 코드는 사용자가 입력한 요일을 기준으로 메시지를 출력하는 예제입니다.

Sub CheckDay()
    Dim dayOfWeek As String
    dayOfWeek = InputBox("요일을 입력하세요 (월, 화, 수, 목, 금, 토, 일):")

    Select Case dayOfWeek
        Case "월", "화", "수", "목", "금"
            MsgBox "오늘은 평일입니다."
        Case "토", "일"
            MsgBox "오늘은 주말입니다!"
        Case Else
            MsgBox "올바른 요일을 입력하세요."
    End Select
End Sub

 

  • 사용자가 요일을 입력하면 Select Case 문을 사용해 요일을 확인.
  • "월", "화", "수", "목", "금"을 한 번에 묶어 평일로 처리.
  • "토", "일"을 묶어 주말로 처리.
  • Case Else를 사용하여 잘못된 입력에 대한 예외 처리.

 

3. 예제 2: 학생의 성적 평가

이번에는 숫자 성적을 입력받아 학점을 평가하는 예제를 만들어 보겠습니다.

Sub CheckGrade()
    Dim score As Integer
    score = InputBox("시험 점수를 입력하세요 (0~100):")

    Select Case score
        Case 90 To 100
            MsgBox "A 학점입니다."
        Case 80 To 89
            MsgBox "B 학점입니다."
        Case 70 To 79
            MsgBox "C 학점입니다."
        Case 60 To 69
            MsgBox "D 학점입니다."
        Case 0 To 59
            MsgBox "F 학점입니다."
        Case Else
            MsgBox "올바른 점수를 입력하세요."
    End Select
End Sub

 

  • 사용자가 입력한 점수를 기준으로 Select Case 문을 사용하여 평가.
  • Case 90 To 100처럼 범위를 설정하여 점수 구간을 지정.
  • Case Else를 사용해 0~100이 아닌 값을 입력했을 때 예외 처리

4. 예제 3: 상품 코드에 따라 가격 출력

이번에는 상품 코드에 따라 다른 가격을 출력하는 예제를 보겠습니다.

Sub CheckPrice()
    Dim productCode As String
    productCode = InputBox("상품 코드를 입력하세요 (A, B, C, D):")

    Select Case productCode
        Case "A"
            MsgBox "상품 A의 가격은 10,000원입니다."
        Case "B"
            MsgBox "상품 B의 가격은 20,000원입니다."
        Case "C"
            MsgBox "상품 C의 가격은 30,000원입니다."
        Case "D"
            MsgBox "상품 D의 가격은 40,000원입니다."
        Case Else
            MsgBox "잘못된 상품 코드입니다."
    End Select
End Sub

 

 

  • 사용자가 입력한 상품 코드에 따라 각각 다른 가격을 표시.
  • Case Else를 사용해 잘못된 코드 입력 시 메시지 출력.

5. 예제 4: 난수를 이용한 주사위 게임

이번에는 Rnd 함수를 이용해 주사위를 굴리는 예제를 만들어 보겠습니다.

Sub DiceGame()
    Dim dice As Integer
    Randomize ' 난수 초기화
    dice = Int((6 * Rnd) + 1) ' 1~6 사이의 난수 생성

    Select Case dice
        Case 1
            MsgBox "주사위 결과: 1 (꽝!)"
        Case 2
            MsgBox "주사위 결과: 2 (아쉽네요.)"
        Case 3
            MsgBox "주사위 결과: 3 (괜찮아요.)"
        Case 4
            MsgBox "주사위 결과: 4 (좋아요!)"
        Case 5
            MsgBox "주사위 결과: 5 (운이 좋네요!)"
        Case 6
            MsgBox "주사위 결과: 6 (대박!)"
    End Select
End Sub

 

 

  • Rnd 함수를 이용해 1~6 사이의 랜덤한 숫자를 생성.
  • 각 숫자마다 다른 메시지를 출력

6. 예제 5: 여러 조건을 만족하는 경우 처리

이번에는 연산자를 사용해 여러 조건을 평가하는 방법을 보겠습니다.

Sub CheckAge()
    Dim age As Integer
    age = InputBox("나이를 입력하세요:")

    Select Case True
        Case age < 13
            MsgBox "어린이입니다."
        Case age >= 13 And age < 20
            MsgBox "청소년입니다."
        Case age >= 20 And age < 65
            MsgBox "성인입니다."
        Case age >= 65
            MsgBox "노인입니다."
        Case Else
            MsgBox "올바른 나이를 입력하세요."
    End Select
End Sub

 

 

  • Select Case True를 사용하여 조건을 비교.
  • Case age < 13 등 조건식이 True가 되면 해당 블록 실행.

Select Case 문은 If...ElseIf...Else 문보다 더 간결하고 가독성이 좋기 때문에 여러 조건을 비교할 때 유용해. 특히 범위(To), 여러 값(,), 논리 표현식(True) 등을 활용하면 더욱 강력한 조건 처리가 가능합니다.

 

'VBA' 카테고리의 다른 글

VBA For Each.... Next 문  (0) 2025.03.05
VBA For ~ Next 문으로 반복 실행하기  (0) 2025.02.28
엑셀(Excel) VBA GoTo 문으로 이동하기  (0) 2025.02.09
엑셀(Excel) VBA IF 문 함수  (0) 2025.02.09
VBA 배열의 선언과 사용  (0) 2025.02.08