이 글이 필요한 사람
컴활 1급 프로시저에서 조건을 읽고도 If를 쓸지 Select Case를 쓸지 결정하지 못하거나 ElseIf, Case To, Case Is의 배치에서 멈추는 사람에게 맞는 글입니다.
기존 프로시저 가이드는 개체·이벤트·값·조건·검토의 전체 풀이 순서를 맡고, 이벤트 가이드는 코드가 언제 실행되는지를 맡습니다. 이 글은 이벤트 안에 들어가는 조건 분기 선택과 범위 작성만 좁게 다룹니다.
컴활 1급 · 프로시저 조건문
두음 암기는 '이참거셀한여'입니다. If는 참·거짓 조건을 가르고, Select Case는 한 값을 여러 경우 중 하나로 나눕니다.
외우기용 문장은 '이프 심판은 참·거짓 깃발을 들고, 셀렉트 안내원은 한 표를 여러 창구 중 하나로 보낸다'입니다. 시험장에서는 서로 다른 조건식인지, 같은 값 하나를 여러 구간과 값으로 비교하는지부터 표시하세요.
결론부터 말하면 조건 하나가 참인지 거짓인지 보거나 서로 다른 식을 차례로 검사하면 If...Then...ElseIf가 편하고, 점수·등급·코드처럼 같은 값을 여러 후보와 비교하면 Select Case가 읽기 쉽습니다. 코드부터 외우지 말고 '조건식 여러 개'와 '비교값 하나'로 먼저 가르세요.
핵심 포인트
본문
컴활 1급 프로시저에서 조건을 읽고도 If를 쓸지 Select Case를 쓸지 결정하지 못하거나 ElseIf, Case To, Case Is의 배치에서 멈추는 사람에게 맞는 글입니다.
기존 프로시저 가이드는 개체·이벤트·값·조건·검토의 전체 풀이 순서를 맡고, 이벤트 가이드는 코드가 언제 실행되는지를 맡습니다. 이 글은 이벤트 안에 들어가는 조건 분기 선택과 범위 작성만 좁게 다룹니다.
'이참거셀한여'는 If 참·거짓, Select Case 한 값·여러 경우의 앞글자를 붙인 암기어입니다. 지시문을 보고 조건 구조의 큰 껍데기를 먼저 고를 때 씁니다.
재미 문장은 '이프 심판은 참·거짓 깃발을 들고, 셀렉트 안내원은 한 표를 여러 창구 중 하나로 보낸다'입니다. 문장은 기억용이고 실제 문제에서는 '조건식 True/False -> If, 한 값 대 여러 후보 -> Select Case'로 번역해야 합니다.
회원 여부와 금액을 함께 따지는 식처럼 비교 기준이 달라지면 If를, 점수 하나를 A·B·C 등급으로 나누면 Select Case를 먼저 검토하세요.
프로시저 조건문은 어떤 값이 맞는지 계산한 뒤 실행할 문장 묶음을 선택합니다. 그래서 지시문에서 먼저 찾을 것은 결과 문장이 아니라 무엇을 기준으로 갈라지는지입니다.
조건 기준이 하나인지 여러 개인지 표시하고, 결과가 두 갈래인지 여러 갈래인지 적으세요. 이 두 질문만으로 If와 Select Case 후보가 크게 줄어듭니다.
Microsoft Learn은 If...Then...Else가 식의 값에 따라 문장 그룹을 조건부로 실행하고, Select Case는 한 식의 여러 가능한 값에 따라 여러 그룹 중 하나를 실행한다고 설명합니다.
이벤트 선택과 조건문 선택은 다른 단계입니다. 버튼 Click이나 Form_Current 같은 실행 시점을 먼저 고른 뒤, 그 이벤트 안에서 조건에 따라 동작을 나눌 때 If 또는 Select Case를 넣습니다.
If condition Then은 condition이 True일 때만 뒤 문장을 실행합니다. False일 때 다른 동작이 필요하면 Else를 붙이고, 블록 형식은 End If로 닫습니다.
예를 들어 수량이 10 이상인지, 체크 상자가 선택되었는지, 입력값이 비어 있는지처럼 각 조건이 참인지 거짓인지 직접 판단할 때 If가 자연스럽습니다.
Microsoft Learn은 짧고 단순한 검사는 한 줄 If로 쓸 수 있지만 블록 형식이 구조를 읽고 수정하고 디버깅하기 더 쉽다고 안내합니다. 여러 실행 문장이 있으면 If...Then과 End If의 범위를 눈으로 확인하세요.
조건식에는 비교 연산자와 And·Or 같은 논리 연산자가 들어갈 수 있습니다. 서로 다른 컨트롤이나 식을 함께 비교해야 한다면 Select Case보다 If가 직접적입니다.
블록 If에서 첫 조건이 False이면 각 ElseIf 조건을 위에서 아래로 평가합니다. Microsoft 문서 기준으로 처음 True가 된 분기의 문장을 실행한 뒤 End If 다음으로 넘어갑니다.
따라서 조건 순서가 결과를 바꿀 수 있습니다. score >= 60을 score >= 90보다 먼저 두면 95점도 첫 조건에서 잡히므로 큰 값 조건부터 내려오거나 구간을 겹치지 않게 만들어야 합니다.
VBA에서는 Else If가 아니라 ElseIf를 한 단어로 씁니다. 마지막 어느 조건에도 맞지 않는 경우는 Else에 두고 블록은 End If로 닫습니다.
각 ElseIf가 회원 여부, 날짜, 금액처럼 서로 다른 식을 평가한다면 If가 적합합니다. 같은 점수 하나를 여러 값과 비교하는 것이라면 Select Case가 더 단순할 수 있습니다.
Microsoft Learn은 Select Case를 한 식을 여러 값과 비교할 때 ElseIf의 대안으로 설명합니다. Select Case 뒤의 test expression을 한 번 평가하고 위에서부터 Case와 맞는지 확인합니다.
점수 하나를 등급으로 나누거나 부서 코드 하나에 따라 다른 메시지를 표시하는 문제처럼 비교 대상이 끝까지 같을 때 구조가 선명합니다.
기본 흐름은 Select Case 비교값, 여러 Case 분기, 필요하면 Case Else, 마지막 End Select입니다. If의 End If와 종료 구문을 섞지 마세요.
둘 이상의 Case가 겹쳐 맞더라도 Microsoft 문서 기준으로 첫 번째로 일치한 Case만 실행됩니다. 따라서 Case 순서와 범위가 겹치지 않는지 확인해야 합니다.
정확히 한 값과 비교하면 Case 1처럼 씁니다. 여러 개별 값이 같은 동작을 하면 Case 1, 3, 5처럼 쉼표로 한 분기에 묶을 수 있습니다.
연속 구간은 Case 1 To 5처럼 To로 표시하며 작은 값을 먼저 씁니다. 기준보다 크거나 작은 값은 Case Is >= 90처럼 Is와 비교 연산자를 사용합니다.
Microsoft의 VBA Select Case 문서는 한 Case에 값, 범위, 비교 연산자를 함께 둘 수 있다고 설명합니다. 지시문에서 '1~5', '90 이상', 'A 또는 B' 같은 표현을 그대로 To·Is·쉼표로 바꾸세요.
어느 Case에도 맞지 않는 값은 Case Else에서 처리합니다. Case Else가 필수는 아니지만 예상하지 못한 값과 빈 입력의 기본 동작을 두는 데 유용합니다.
결과가 두 갈래라고 무조건 If, 여러 갈래라고 무조건 Select Case라고 외우면 부족합니다. 가장 중요한 기준은 모든 분기가 같은 식 하나를 비교하는지입니다.
같은 score 값을 90 이상, 80~89, 그 밖으로 나누면 Select Case가 읽기 쉽습니다. 반면 score와 attendance, membership처럼 분기마다 다른 식을 평가하면 If...ElseIf가 직접적입니다.
Select Case True를 이용해 여러 논리식을 넣는 방식도 있지만 기본 선택 기준을 흐릴 수 있습니다. 컴활 연습에서는 지시문의 비교값이 하나인지 먼저 보고, 다르면 If를 우선 검토하는 편이 안전합니다.
두 구조 모두 중첩할 수 있지만 닫는 구문과 들여쓰기가 늘어납니다. 문제 요구보다 복잡하게 중첩하지 말고 먼저 한 단계 분기로 해결되는지 확인하세요.
첫째, 비교할 값이나 조건식에 밑줄을 긋습니다. 둘째, 서로 다른 조건식이면 If, 같은 값 하나의 여러 후보면 Select Case를 고릅니다.
셋째, If라면 조건 순서·ElseIf·Else·End If를, Select Case라면 Case 값·To·Is·쉼표·Case Else·End Select를 배치합니다. 넷째, 경계값과 어느 조건에도 맞지 않는 값을 직접 넣어 봅니다.
90, 80, 79 같은 경계값을 대입하면 범위 누락과 겹침을 빨리 찾을 수 있습니다. 첫 일치 분기만 실행되므로 위에서 넓은 조건이 아래의 좁은 조건을 가리지 않는지도 봅니다.
마지막에는 이벤트 속성과 프로시저 이름, If·Select Case 종료 구문, 컨트롤 이름, 비교 연산자를 차례로 확인합니다. 조건문만 맞아도 잘못된 이벤트에 들어가면 원하는 순간에 실행되지 않습니다.
첫째, 두음 암기는 '이참거셀한여'입니다. 둘째, 참·거짓이나 서로 다른 조건식은 If...Then...ElseIf로 봅니다.
셋째, 같은 값 하나의 여러 후보와 구간은 Select Case로 봅니다. 넷째, Case는 쉼표 목록·To 범위·Is 비교를 쓸 수 있습니다.
다섯째, 첫 일치 분기만 실행되므로 순서와 경계값을 확인하고 If는 End If, Select Case는 End Select로 닫습니다.
FAQ
서로 다른 조건식을 참·거짓으로 검사하면 If가, 점수나 코드 같은 한 값을 여러 후보·범위와 비교하면 Select Case가 읽기 쉽습니다.
블록 If의 추가 조건은 ElseIf를 한 단어로 씁니다. 모든 조건이 False일 때의 기본 동작은 Else에 둡니다.
연속 범위는 Case 80 To 89처럼 쓰고, 이상·이하는 Case Is >= 90처럼 씁니다. 여러 개별 값은 Case 1, 3, 5처럼 쉼표로 묶을 수 있습니다.
필수는 아니지만 어느 Case에도 맞지 않는 값의 기본 동작을 처리하는 데 유용합니다. 없으면 일치하는 Case가 없을 때 End Select 다음으로 넘어갑니다.