Case 다음에 오는 비교대상 값은 여러가지 조건을 조합할 수 있음.
1. 여러개의 값 형태 -> 5,23,4
2. 구간 설정 -> 25 To 100
3. 혼합 -> 1,2,3, To 100,110,112
* Select Case
Select Case는 선택문으로서 해당하는 값과 일치하는 값이 있는 경우를 찾는 명령문이다. If- Then 문과 비슷하지만, If문은 참과 거짓을 판단하지만, Select Case문은 참과 거짓이 아닌 값이 일치하는 경우만 찾는다.
문법 구조
Select Case test_variable(test_expression)
[Case expression1 'expression1인 경우
instruction1]
[Case expression2 'expression2인 경우
instruction2]
[Case expression3 'expression3인 경우
instruction3]
[Case Else '그 밖의 경우
instruction4]
End Select
참고) test_variable(test_expression) : 사용할 변수나 수식(논리식을 사용하지 않음)
expression : 어떤경우인지 사용할 값이나 범위, 논리식
범위를 표현할 때에는 '값 To 값'으로 표현한다. (예: 10 To 20)
논리식으로 표현할 때에는 논리식으로 표현한다. (예: Is >= 100)
여기서 Is는 변수가 아니라 test_variable를 대신하는 예약어이다.
예약어 : VBA에서 사용하기로 약속되어있는 단어
[ ] : 생략가능한 문장
test_variable의 값을 가지고, 그 값이 expression1에 해당되는 경우에는 instruction1을 수행하고 Selection문이 종료된다.
test_variable의 값이 expression1에 해당되지 않으면 expression2에 해당되는 보고, 해당되는 경우에는 instruction2를 수행하고 Selection문이 종료된다.
test_variable의 값이 expression1에도 해당되지 않으면 expression2에도 해당되는지 보고, 해당되지 않으면 expression3에 해당되는지 살펴본다. expression3에 해당되는 경우에는 instruction3을 수행하고 Selection문이 종료된다.
test_variable의 값이 expression1에도 해당되지 않으면 expression2에도 해당되는지 보고, 해당되지 않으면 expression3에 해당되는지 살펴본다. expression3에 해당되지 않으면 마지막으로 남은 그 밖의 경우(Case Else)인 instruction4를 수행하고 Selection문이 종료된다.
다음 예를 보자.
Select Case stu_score
Case 10
MsgBox "LOW"
Case 10
MsgBox "MIDDLE"
Case Else
MsgBox "HIGH"
End Select
위 코드는 stu_score 변수의 값이 10이면 메세지박스에 'Low'값을 출력하고,
20이면 메세지박스에 'Middle'값을 출력하고,
30이면 메세지박스에 'High'값을 출력한다.
또 다른 예를 보자.
Select Case count_stu
Case 0 To 10
MsgBox "Low"
Case 11 To 30
MsgBox "Middle"
Case Is > 30
MsgBox "High"
End Select
범위에 대한 Select Case 문을 사용할 때에는 각각의 Case가 정렬된 순서로 나열되어야 한다. 위 코드는 count_stu 변수의 값을 보고 만약 그 값이 0~10 사이의 값이면 메세지박스에 'Low'값을 출력하고,
11~30 사이의 값이면 'Middle'값을 출력하고,
30초과의 값이면 'High'값을 출력하는 코드이다.
세번째 Case문을 다시 살펴보면 논리식이 'Is > 30' 이라고 되어있다. 여기서 Is는 count_stu 변수를 가르키는 예약어이다. 그래서 count_stu >30 이라고 물어보는 것과 같다고 생각하면 된다.
[출처] 13강 VBA의 Select Case|작성자 난한국인
'컴퓨터관련' 카테고리의 다른 글
Visual Basic recordset, 폼 연습...펌 (0) | 2010.11.13 |
---|---|
sql hash join...펌 (0) | 2010.11.11 |
DoCmd.OutputTo dbf -> DoCmd.TransferDatabase...펌 (0) | 2010.11.09 |
sql in...펌 (0) | 2010.11.08 |
rs(0)의 의미...펌 (0) | 2010.11.08 |