1. 조건문
- 조건문 : 지정한 조건에 만족할 때와 그렇지 않을 때, 반환하는 결과를 다르게 설정할 때 사용하는 명령문
1-1) IF문
- IF 문은 가장 기본적인 조건문으로 가장 많이 사용되며, 3가지 형식으로 사용 가능
1-1-1) 조건이 만족할 때만 실행
IF (조건식) Then 조건식을 판단한 결과가 TRUE일때만 실행할 명령 수행문 End If |
▷ 예시 - 평균이 80 이상이면 '합격' 출력
Sub 합격여부1() Sheet("조건문1").Select If Range("e4").Valye >= 80 Then Range("f4").Value = "합격" End If End Sub |
1-1-2) 조건에 만족할 때와 조건에 만족하지 않을 때 다르게 실행
IF (조건식) Then 조건식을 판단한 결과가 TRUE일 때 실행할 명령 수행문 Else 조건식을 판단한 결과가 FALSE일 때 실행할 명령 수행문 End If |
▷ 예시 - 평균이 80 이상이면 '합격' 그렇지 않으면 '불합격' 출력
Sub 합격여부2() Sheet("조건문1").Select If Range("e4").Valye >= 80 Then Range("f4").Value = "합격" Else Range("f4").Value = "불합격" End If End Sub |
1-1-3) 2개 이상의 조건을 판단하여 각 조건의 판단 결과에 따라 다른 결과를 실행
IF (조건식1) Then 조건식1의 판단 결과가 TRUE일 때 실행할 실행문 ElseIf (조건식2) Then 조건식2의 판단 결과가 TRUE일 때 실행할 실행문 [ElseIf 문 조건식 만큼 반복] Else 지정한 조건식 모두를 만족하지 않았을 때 실행할 실행문 End If |
▷ 예시 - 평균이 90 이상이면 'A', 80점 이상이면, 'B', 70점 이상이면, 'C', 60점 이상이면, 'D', 나머지는 'F' 표시
Sub 학점1() Sheet("조건문1").Select If Range("e4").Valye >=90 Then Range("g4").Value = "A" ElseIf Range("e4").Valye >=80 Then Range("g4").Value = "B" ElseIf Range("e4").Valye >=70 Then Range("g4").Value = "C" ElseIf Range("e4").Valye >=60 Then Range("g4").Value = "D" Else Range("g4").Value = "F" End If End Sub |
- IF 문의 조건 연산자
▷ IF 문에서 조건식을 지정할 때 And, Or, Not 연산자를 사용 가능하다.
▷ AND : 지정한 조건을 모두 만족하는 경우를 판단함
▷ OR : 지정한 조건 중, 하나만 만족해도 되는 경우를 판단함
▷ NOT : 지정한 조건 아닌 경우를 판단함
조건이 많아지면 If문 보다는 Select Case문을 사용하는 것이 좀 더 효율적이다.
1-2) Select Case문
- 조건의 판단 결과에 따라 다른 동작을 수행하는 조건문
- 여러 개의 조건을 처리해야 하는 경우 더 적합함
1-2-1) Select Case 문의 형식
Select Case 식 (또는 변수) Case조건1 조건1이 만족할 때 실행할 실행문 Case조건2 조건2가 만족할 때 실행할 실행문 Case조건3 조건3이 만족할 때 실행할 실행문 [Case 조건 반복] Case Else 지정한 조건이 모두 만족하지 않았을 때 실행할 실행문 End Select |
▷ 예시 - 평균이 90 이상이면 'A', 80점 이상이면, 'B', 70점 이상이면, 'C', 60점 이상이면, 'D', 나머지는 'F' 표시
Sub 학점2() Sheet("조건문2").Select Select Case Range("e4") Case Is >= 90 Range("g4") = "A" Case Is >= 80 Range("g4") = "B" Case Is >= 70 Range("g4") = "C" Case Is >= 60 Range("g4") = "D" Case Else Range("g4") = "F" End Select End Sub |
1-2-2) 조건을 지정하는 다양한 방법
▷ 숫자 값의 범위를 조건으로 지정하는 경우
- To 키워드를 사용
Select Case Range("A1").Value Case 1 To 10 Msgbox "1~10 사이 값입니다." Case11 To 20 Msgbox "11~20 사이 값입니다." CaseElse Msgbox "0~20 이외의 값입니다." End Select |
▷ OR 조건을 지정하는 경우
- 조건에 쉼표(,) 사용
Select Case Range("A1").Value Case 1, 3, 5 Msgbox "1, 3, 5 중 하나의 값입니다." Case 2, 4, 6 Msgbox "2, 4, 6 중 하나의 값입니다." Case Else Msgbox "1,2,3,4,5,6 이외의 값입니다." End Select |
▷ 비교 연산자를 사용하는 경우
- 연산자 앞에 Is 사용
Select Case Range("A1").Value Case Is >10 Msgbox "10보다 큰 값입니다." Case Is < 30 Msgbox "30보다 작은 값입니다." Case Else End Select |
2. 반복문
반복문 : 작성한 코드를 반복해서 실행할 때 사용하는 명령문
▷ 예시
합격 여부를 마지막 영역까지 반복 출력하고자 할 때
2-1) For문
2-1-1) For Next 문
- 지정한 횟수만큼 코드를 반복해서 실행하고자 할 때 사용
For 카운터변수 = 시작수 To 끝수 [Step 증감값] 반복해서 실행할 실행문 Next [카운터변수] |
- 아래 For 문은 I = 10, 9, 8~1순으로 실행됨
For 카운터변수 = 끝수 To 시작수 Step-1[Step 가감값] 반복해서 실행할 실행문 Next [카운터변수] |
- Exit For 문은 순환도중 For 순환을 즉시 중단시킴
▷ 예시1 - 평균이 80 이상이면 '합격', 그렇지 않으면 '불합격'
Sub 합격여부1() 'For Next 문 Dim i As Integer Sheet("반복문1").Select For i = 4 To 13 Step 1 If Range("e" & i).Value >= 80 Then Range("f" & i).Value = "합격" Range("e" & i).Font.Color = vbBlue Else Range("f" & i).Value = "불합격" Range("e" & i).Font.Color = vbRed Enf If Next i End Sub |
▷ 예시2 - 평균이 80 이상이면 '합격', 그렇지 않으면 '불합격'
Sub 합격여부1_1() 'For Next 문 Dim i As Integer Dim rCnt As Integer rCnt = Range("b4").CurrentRegion.Rows.Count +2 Sheet("반복문1").Select For i = 4 To rCnt If Range("e" & i).Value >= 80 Then Range("f" & i).Value = "합격" Range("e" & i).Font.Color = vbBlue Else Range("f" & i).Value = "불합격" Range("e" & i).Font.Color = vbRed Enf If Next i End Sub |
2-1-2) For Each Next문
- 셀 영역,워크시트, 여러 통합 문서처럼 개체들의 집합(컬렉션)의 개별 요소에 대한 반복 작업을 실행 해야 할 때 사용
(예 : 워크시트를 반복하면서 각 시트명을 셀에 입력하는 경우, 선택한 범위의 각 셀을 순환하면서 원하는 셀 서식을 지정하는 경우)
For Each 개체 변수 In 컬렉션 실행문 Next |
▷ 예시 - workbook에 있는 모든 피봇테이블을 제거함
Sub 테이블 제거() Dim sht As Worksheet Dim pvt As PivotTable For Each sht In ActiveWorkbook.Worksheets For Each pvt In sht.PivotTables pvt.TableRange2.Clear Next pvt Next sht End Sub |
위에서 ActiveWorkbook.Worksheets은 현재 Workbook에 있는 Worksheet 전체를 가르키는 집합개체(컬렉션) 이다.
이에 반해 sht.PivotTables는 현재 worksheet에 있는 피봇테이블 전체를 대변하는 집합개체(컬렉션) 이다.
즉 우리가 일일이 지정하지 않더라도 자동적으로 모든 객체를 대상으로 순환해 주는 매우 편리한 제어문이다.
2-2) Do Loop문
- Do Loop문에는 Do While Loop 와 Do Until Loop 두가지가 있다.
2-2-1) Do While Loop
- 지정한 조건이 만족하는 동안 실행문을 반복
Do While 조건식 실행문 Loop |
위는 While이 앞에 나오면 조건이 맞는 경우에만 명령수행을 하고
Do 실행문 Loop While 조건식 |
위는 한번 명령수행을 하고 이후부터는 조건이 맞을 때만 순환하는 구조이다.
▷ 예시 - A1~A6 셀에 값이 입력되어 있는데 B열에 A열의 값에 10을 더한 값을 넣는다.
Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Cells(i, 2).Value = Cells(i, 1).Value + 10 i = i + 1 Loop |
위에서 Do While Cells(i, 1).Value <> "" : 셀의 내용이 공백이 아닐 경우 아래 명령을 수행한다.
2-2-2) Do Until Loop
- 지정한 조건이 만족할 때까지 실행문을 반복
Do Until 조건식 실행문 Loop |
▷ 예시 - A1~A6 셀에 값이 입력되어 있는데 B열에 A열의 값에 10을 더한 값을 넣는다.
Dim i As Integer i = 1 Do Until i > 10 Result = Result + i i = i + 1 Loop MsgBox Result |
위에서 Do Until i > 10 : i가 10보다 커질 때까지 더해 나가라는 뜻이다.
3. 여러가지
3-1) break문
Exit For, Exit While, Exit Do
3-2) Continue문
Continue While, Continue For, Contine Do
출처: [학습(공부)하는 블로그]