[엑셀 VBA #7] SELECT CASE 조건문 활용하기
엑셀 VBA 강의 2015. 11. 11. 14:50 |이전 포스팅 바로가기
[엑셀 VBA #7] SELECT CASE 조건문 활용하기
이번 시간에는 조건이 많을 경우 사용되는 SELECT CASE 조건문에 대해 알아보겠습니다.
조건문을 처음 접하시는 분은 저번 포스팅(if~else 조건문)을 먼저 읽어 보시고 시작해주세요.
늘 그렇듯이 예제와 함께 시작하겠습니다.
숨겨진 시트에 과거 포스팅 내용들이 담겨있습니다.
이번 예제는 지난번 예제와 비슷합니다.
학생의 점수 구간 별로 등급을 매기는 엑셀 VBA입니다.
SELECT CASE 조건문의 구조는 아래와 같습니다.
Select case 변수
case n1
명령
case n2
명령2
...
End Select
즉, 변수의 값을 케이스별로 구분해서 명령을 내린다는 뜻입니다.
예제를 살펴보겠습니다.
Dim i As Byte
Dim p As Byte
For i = 3 To 17 Step 1
p = Sheet6.Cells(i,2).Value
Select Case p
Case Is >= 90
Sheet6.Cells(i, 3).Value = "A"
Case Is >= 70
Sheet6.Cells(i, 3).Value = "B"
Case Is >= 50
Sheet6.Cells(i, 3).Value = "C"
Case Is >= 30
Sheet6.Cells(i, 3).Value = "D"
Case Is < 30
Sheet6.Cells(i, 3).Value = "F"
End Select
Next i
조건이 단순한 값인 경우에는 'Case a' 처럼 쓸 수 있지만,
조건을 범위로 둘 경우, 'Case is ~~'라고 작성해야 합니다.
또 한가지 주의해야 할 점으로, Select Case 문 역시 여타 엑셀 VBA 문법처럼 위에서 아래로 내려가는 실행 구조를 갖고 있습니다.
따라서 If~Else문과 같이, 합집합의 범위가 가장 작은 조건부터 작성해야 합니다.
간단하게 오류가 나는 예를 들어보겠습니다.
Dim i As Byte
Dim p As Byte
For i = 3 To 17 Step 1
p = Sheet6.Cells(i, 2).Value
Select Case p
Case Is < 30
Sheet6.Cells(i, 3).Value = "F"
Case Is >= 30
Sheet6.Cells(i, 3).Value = "D"
Case Is >= 50
Sheet6.Cells(i, 3).Value = "C"
Case Is >= 70
Sheet6.Cells(i, 3).Value = "B"
Case Is >= 90
Sheet6.Cells(i, 3).Value = "A"
End Select
Next i
위 예제가 앞서 보여드린 예제와 다른 점은 조건의 순서가 바뀐 것입니다.
이 예제에는 30보다 크거나 같은 조건을 앞에다 위치시켰습니다.
이런 경우에는 30보다 큰 모든 값이 D로 표시되게 됩니다.
F8을 눌러서 순차적으로 실행해 보면 알 수 있겠지만, Select Case문 같은 경우, 조건에 맞는 Case를 찾게 되면 명령을 실행한 후 바로 End Select로 넘어가게 됩니다.
따라서 각 조건의 관계는 아래 그림과 같이 형성되야 합니다.
A에서 D까지의 순서로 조건을 지정해 주어야 오류를 방지할 수 있습니다.
A의 조건을 먼저 실행하고 나면 그 다음 B 조건의 실제 범위는 A를 포함하지 않는 B의 범위가 됩니다.
따라서 조건이 서로 겹치지 않게 됩니다.
엑셀 VBA에서 가장 중요하고 기초가 되는 문법이 조건문과 반복문입니다.
꼭! 이해하고 넘어가 주세요.
다음 포스팅부터는 아주 조금 난이도를 높혀서 진행하도록 하겠습니다.
'엑셀 VBA 강의' 카테고리의 다른 글
[엑셀 VBA #9] 값이 있는 마지막 셀을 선택, End 속성 (3) | 2015.11.20 |
---|---|
[엑셀 VBA #8] Resize, Offset 문을 이용한 셀 범위 설정 (1) | 2015.11.16 |
[엑셀 VBA #6] IF~ELSE 조건문 활용하기 (1) | 2015.11.09 |
[엑셀 VBA #5] FOR~NEXT 반복문 응용하기 (0) | 2015.11.06 |
[엑셀 VBA #4] 변수를 이용한 DO~LOOP 반복문 응용 (3) | 2015.11.04 |