엑셀 VBA 제어문의 종류
단일 조건문
단일 조건문은 조건에 따라 특정한 명령을 수행할 것인가를 결정하는 문장으로 다음과 같은 형식을 가집니다.
기본 구문
If 조건 Then --- 만약 조건이 참일 경우 문장 --- 문장을 실행함 End If |
예)
Sub 평가() --- 프로시저의 시작 성적 = 80 --- 변수 ‘성적’에 80 저장 If 성적 >= 80 Then --- 변수 ‘성적’의 값이 80이상이면 MsgBox "합격" --- ‘합격’ 메시지 표시 End If --- If 문의 끝 End Sub --- 프로시저의 끝 |
If 문 축약하기
단순 조건문은 다음과 같이 End If를 생략할 수 있다. Sub 평가() 성적 = 80 If 성적 >= 80 Then MsgBox “합격” End Sub |
2. 이중 조건문
이중 조건문은 조건이 참일 때와 거짓일 때에 따라 서로 다른 문장을 수행하는 문장입니다.
기본 구문
If 조건 Then --- 만약 조건이 참일 경우 문장1 --- 문장1을 실행하고 Else --- 그렇지 않으면 문장2 --- 문장2를 실행함 End If |
예)
Sub 평가() --- 프로시저의 시작 성적 = 80 --- 변수 ‘성적’에 80 저장 If 성적 >= 80 Then --- 변수 ‘성적’의 값이 80 이상이면 MsgBox “합격” --- ‘합격’ 메시지 표시함 Else --- 그렇지 않으면 MsgBox “불합격” --- ‘불합격’ 메시지 표시함 End If --- If 문의 끝 End Sub --- 프로시저의 끝 |
3. 다중 조건문
다중 조건문은 여러 개의 조건을 처리하는 문장으로 Select Case문으로 대신할 수 있습니다.
기본 구문
If 조건식1 Then --- 만약 조건식1이 참일 경우 문장1 --- 문장1를 실행하고 ElseIf 조건식2 Then --- 그렇지 않고 조건식2가 참일 경우 문장2 --- 문장2를 실행하며 . . . . Else --- 그렇지 않고 모두 거짓일 경우 문장3 --- 문장3을 실행함 End If |
예)
Sub 수도() --- 프로시저의 시작 도시 = InputBox(“도시를 입력하세요.”) --- 값을 입력받아 ‘도시’에 저장 If 도시 = “서울” Then --- ‘도시’가 ‘서울'이면 MsgBox “한국” --- ‘한국’ 메시지 표시 ElseIf 도시 = “워싱턴” Then --- ‘도시’가 ‘워싱턴’이면 MsgBox “미국” --- ‘미국’ 메시지 표시 ElseIf 도시 = “런던” Then --- ‘도시’가 ‘런던’이면 MsgBox “영국” --- ‘영국’ 메시지 표시 Else --- 위의 도시가 아니면 MsgBox “알수없음” --- ‘알수없음’ 메시지 표시 End If --- If 문의 끝 End Sub --- 프로시저의 끝 |
4. 값으로 선택하기
�� 조건이 문자나 숫자 값일 경우 다음과 같은 형식으로 조건에 따라 결과를 산출할 수 있습니다.
기본 구문
Select Case 조건 --- 조건이 Case 값1 --- 값1이면 명령1 --- 명령1을 수행함 Case 값2 --- 값2이면 명령2 --- 명령2를 수행함 Case 값3 --- 값3이면 명령3 --- 명령3을 수행함 Case Else --- 그렇지 않으면 명령4 --- 문장4를 수행함 End Select |
예)
Sub 수도() --- 프로시저의 시작 도시 = InputBox(“도시 입력.”) --- 값을 입력받아 ‘도시’에 저장 Select Case 도시 --- Select 문 시작 Case “서울”: MsgBox “한국” --- ‘도시’가 ‘서울'이면 ‘한국’ 메시지 표시 Case “워싱턴”: MsgBox “미국” --- ‘도시’가 ‘워싱턴’이면 ‘미국’ 메시지 표시 Case “런던”: MsgBox “영국” --- ‘도시’가 ‘런던’이면 ‘영국’ 메시지 표시 Case Else: MsgBox “알수없음” --- 아니면 ‘알수없음’ 메시지 표시 End Select --- Select 문의 끝 End Sub --- 프로시저의 끝
|
5. 범위로 선택하기
입력되는 숫자의 범위에 따라 다른 결과를 산출하는 방법으로 다음과 같이 사용됩니다.
기본 구문
Select Case 값 Case Is <= 범위1: 명령1 --- 값이 범위1보다 작으면 명령1을 실행함 Case 범위2 To 범위3: 명령2 --- 범위2에서 범위3 사이에 있으면 명령2를 실행함 Case 범위4 To 범위5: 명령3 --- 범위4에서 범위5 사이에 있으면 명령3을 실행함 Case Is >= 범위6: 명령4 --- 범위6보다 크면 명령4를 실행함 End Select |
예)
Sub 성적판정() --- 프로시저의 시작 점수 = InputBox(“점수 입력”) --- 값을 입력받아 ‘점수’에 저장 Select Case 점수 --- Select 문 시작 Case Is < 0: MsgBox “너무 작음” --- ‘점수’가 0보다 작으면 Case 0 To 59: MsgBox “가” --- ‘점수’가 0부터 59사이면 Case 60 To 69: MsgBox “양” --- ‘점수’가 60부터 69사이면 Case 70 To 79: MsgBox “미” --- ‘점수’가 70부터 79사이면 Case 80 To 89: MsgBox “우” --- ‘점수’가 80부터 89사이면 Case 90 To 100: MsgBox “수” --- ‘점수’가 90부터 100사이면 Case Is > 100: MsgBox “너무 큼” --- ‘점수’가 100보다 크면 End Select --- Select 문의 끝 End Sub --- 프로시저의 끝 |
6. 단일 반복문
변수의 값이 특정한 값에 도달할 때까지 변수를 증가시키거나 감소시키며 특정한 명령문을 반복 실행하는 명령문으로, 시작값/종료값/증감값을 지정해야 하며, 증감값을 생략할 경우 1이 된다.
기본 구문
For 변수 = 시작값 To 종료값 Step 증감값 --- 시작값부터 종류값까지 증가 또는 감소하며 문장 --- 문장을 실행함 Next 변수 |
예)
Sub 합계() --- 프로시저의 시작 Sum = 0 --- 변수 ‘Sum’에 0 저장 For i = 0 To 10 --- 변수 ‘i’가 0부터 1씩 증가하여 10이 될 때까지 Sum = Sum + i --- 변수 ‘Sum’에 ‘i’의 값을 더함 Next i --- For 문의 끝 MsgBox Sum --- 합계를 출력함 End Sub --- 프로시저의 끝 |
7. 다중 반복문
다중 반복문은 For 문이 중첩된 형태로 이차원 배열을 처리할 때 주로 이용합니다.
기본 구문
For 변수1 = 시작값 To 종료값 Step 증감값 For 변수2 = 시작값 To 종료값 Step 증감값 --- 변수2의 문장을 문장 Next 변수2 --- 변수1만큼 반복 실행함 Next 변수1 |
예)
Sub 다중반복() --- 프로시저의 시작 For i = 1 To 5 --- 변수 ‘i’가 1부터 5까지 1씩 증가하며 For j = 5 To 1 Step -1 --- 변수 ‘j’가 5부터 1까지 1씩 감소하며 Debug.Print i * j; --- 직접 실행 창에 ‘i’와 ‘j’를 곱한 값을 출력함 Next j --- 내부 For 문의 끝 Debug.Print --- 다음 줄로 이동함 Next i --- 외부 For 문의 끝 End Sub --- 프로시저의 끝 |
8. Do While ~ Loop 구문
조건이 만족되거나 조건이 참(true)이 될 때까지 명령문을 반복 수행하는 구문으로 조건에 따라 문장이 실행되지 않을 수 있습니다.
Do While 조건 문장 Loop => 조건을 먼저 검사하여 조건이 참인 동안 문장을 실행함 |
예)
Sub 합계() --- 프로시저의 시작 Sum = 0 --- 변수 Sum의 값을 0으로 초기화 i = 1 --- 변수 i의 값을 1로 초기화 Do While i <= 100 --- 변수 i가 100보다 작거나 같은지 검사하여 참이면 Sum = Sum + I --- 변수 Sum에 변수 ‘i’의 값을 더함 i = i + 1 --- 변수 i의 값을 1 증가시킴 Loop --- ④로 돌아가 조건을 검사하여 참이면 ⑤~⑥을 다시 실행, 거짓이면 While문을 종료함 MsgBox Sum --- 변수 Sum의 값을 표시 End Sub --- 프로시저의 끝 |
9. Do ~ Loop While 구문
문장을 먼저 실행한 후 조건을 비교하는 제어문으로 조건의 만족 여부와는 관계없이 반드시 한 번은 문장을 실행합니다.
기본 구문
Do 문장 Loop While 조건 => 문장을 먼저 실행하고 조건이 참이면 문장을 계속 실행함 |
예)
Sub 합계() --- 프로시저의 시작 Sum = 0 --- 변수 ‘Sum’의 값을 0으로 초기화 i = 1 --- 변수 ‘i’의 값을 1로 초기화 Do --- While 문의 시작 Sum = Sum + i --- 변수 ‘Sum’에 변수 ‘i’의 값을 더함 i = i + 1 --- 변수 ‘i’의 값을 1 증가시킴. Loop While i <= 100 --- 변수 ‘i’가 100보다 작거나 같은지 검사하여 참이면 ④로 돌아가 ⑤~⑥을 다시 실행, 거짓이면 While 문을 종료함 MsgBox Sum --- 변수 ‘Sum’의 값을 표시 End Sub --- 프로시저의 끝 |
10. Do Until ~ Loop 구문
조건이 거짓(False)인 동안 명령문을 반복 수행하는 구문으로 조건에 따라 문장이 실행되지 않을 수 있습니다.
Do Until 조건 문장 Loop => 조건을 먼저 검사하여 조건이 거짓인 동안 문장을 실행한다. |
예)
Sub 합계() --- 프로시저의 시작 Sum = 0 --- 변수 ‘Sum’의 값을 0으로 초기화 i = 1 --- 변수 ‘i’의 값을 1로 초기화 Do Until i > 100 --- 변수 ‘i’가 100보다 크다는 조건이 거짓이면 Sum = Sum + i --- 변수 ‘Sum’에 변수 ‘i’의 값을 더함 i = i + 1 --- 변수 ‘i’의 값을 1 증가시킴 Loop --- ④로 돌아가 조건을 검사하여 거짓이면 ⑤~⑥을 다시 실행, 참이면 Until 문을 종료함 MsgBox Sum --- 변수 ‘Sum’의 값을 표시 End Sub --- 프로시저의 끝 |
11. Do ~ Loop Until 구문
Do ~ Loop While 구문과 마찬가지로 문장을 먼저 실행한 후 조건을 비교하는 제어문으로 조건의 만족 여부와는 관계없이 반드시 한 번은 문장을 실행합니다.
Do 문장 Loop until 조건 => 문장을 먼저 실행하고 조건이 거짓이면 계속 문장을 실행한다. |
예)
Sub 합계() --- 프로시저의 시작 Sum = 0 --- 변수 ‘Sum’의 값을 0으로 초기화 i = 1 --- 변수 ‘i’의 값을 1로 초기화 Do --- While 문의 시작 Sum = Sum + i --- 변수 ‘Sum’에 변수 ‘i’의 값을 더함. i = i + 1 --- 변수 ‘i’의 값을 1 증가시킴. Loop Until i > 100 --- 변수 ‘i’가 100보다 크다는 조건이 거짓이면 ④번으로 돌아가 ⑤~⑥을 다시 실행, 참이면 While 문을 종료함 MsgBox Sum --- 변수 ‘Sum’의 값을 표시 ⑨ End Sub --- 프로시저의 끝 |
12. Whlie ~ Wend 구문
Do While ~ Loop 문 대신 While ~ Wend 문을 대신 사용할 수 있습니다.
Sub 합계() Sum = 0 i = 1 Do While i <= 100 Sum = Sum + i i = i + 1 Loop MsgBox Sum End Sub |
Sub 합계() Sum = 0 i = 1 While i <= 100 Sum = Sum + i i = i + 1 Wend MsgBox Sum End Sub |