본문 바로가기
excel VBA

엑셀 vba 제어문

by 퍼포먼스마케팅코더 2023. 8. 30.
반응형

제어문

프로그램을 작성에 사용자가 설정한 조건이 맞는 동안 일련된 명령을 실행하는 키워드가 있는데 이것을 제어문(control statement)이라고 말한다.

If-Then-ElseIf-Then-Else 문

If-Then-ElseIf-Then-Else 문(If 문)은 조건 값에 따라서 특정 문이나 문 블록을 실행하는 제어문이다. If 문은 조건이 True이면 문을 실행하고 False 이면 문을 실행하지 못한다. If 문은 필요한 수만큼 반복하여 사용할 수 있다. 그러나 읽기 쉽게 하려면 여러 개로 중첩된 If 문을 사용하는 것보다는 기능이 비슷한 Select-Case 문을 사용할 수도 있다. 다음은 If 문의 사용법이다.

If condition1 Then
   [statements1]
[ElseIf condition2 Then
   [statements2] ]
[Else
   [statementsn] ]
End If

여기서

  • condition1 : 이 조건이 True이면 statements1이 실행된다.
  • condition2 : condition1을 제외하고 이 조건이 True이면 statements2 실행된다.

조건이 여러 개이면 ElseIf condition2 Then을 여러 번 사용한다. 반면 조건이 한 개면 If-Then-Else를 사용한다. Else 이후 실행할 문이 없으면 생략한다.

다음 예는 Else 키워드를 생략한 한 줄 구문이다.

Sub IfTest()
   score = 90
   If score >= 60 Then MsgBox "당신은 합격입니다."
End Sub

3 줄은 score 변수값이 60 이상여면 Then 다음 문이 실행된다. If-Then-Else 문에서 한 줄 이상 코드 실행은 여러 줄에 문을 사용하고 End If 문을 마지막에 포함한다.

다음 예는 논리 조건이 한 개이고 실행문이 2 개이다.

Sub IfEndIfTest()
   score = 90
   If score >= 60 Then
      MsgBox "당신 점수는" & score & "점입니다."
      MsgBox "당신의 합격을 축하드립니다."
   End If
End Sub

If-Then-Else 문을 사용하여 실행문 블록 두 개를 정의한다. 조건이 True이면 설정한 블록이 실행되고 False이면 다른 블록이 실행된다.

Sub IfElseTest()
   score = InputBox("점수를 입력하세요", "점수", 59)
   If score >= 60 Then
      MsgBox "당신은 합격입니다."
   Else
      MsgBox "당신은 불합격입니다."
   End If
End Sub

위 예에서 2 줄은 사용자가 입력한 점수를 score에 저장하고, 그 값이 60 이상이면 4 줄, 미만이면 6 줄이 실행되는 코드이다

첫 번째 조건이 False일 때 두 번째 조건 검사하는 방법은 If-Then-Else 문에 ElseIf 문을 추가한다. 이렇게 설정하면 첫 번째 조건이 False일 때 두 번째 조건을 검사한다. 다음 예는 score 값에 따라 등급을 결정한다. 만일 2 줄 score에 입력 값이 89점이면 3 줄의 조건이 만족되지 않으니 다음 5 줄 조건이 맞는지 비교하게 된다.

Sub IfElseIfTest()
   score = InputBox("점수를 입력하세요", "점수", 89)
   If score >= 90 Then
      MsgBox "당신 성적등급은 매우 잘함입니다."
   ElseIf score >= 80 Then
      MsgBox "당신 성적등급은 잘함입니다."
   ElseIf score >= 70 Then
      MsgBox "당신 성적등급은 보통입니다."
   ElseIf score >= 60 Then
      MsgBox "당신 성적등급은 노력바람입니다."
   Else
      MsgBox "당신은 성적등급은 매우노력바람 못함입니다."
   End If
End Sub

Select-Case 문

식을 다른 여러 값과 비교할 때 If-Then-Else 문의 ElseIf를 사용하는 것과 같이 Select-Case 문을 사용한다. Select-Case 문의 사용법은 다음과 같다.

Select Case testexpression
Case expressionlist
   [statements]
.
.
.
Case Else
   [statements]
End Select

위 식에서 인수의 사용은 다음과 같다.

  • testexpression : 반드시 입력해야 하는 값으로 수식이나 문자식
  • testexpressionlist : Case에 반드시 입력하는 값으로 특정값이나 범위를지정할 수 있음

Case-Else 문은 Select Case 문이 어느 Case 문의 값과도 일치하지 않을 때 실행된다. 다음 예는 Select-Case 문을 사용하였다. 내용은 if 문에서 소개한 예와 동일하다. Select-Case 문은 If-Then-ElseIf-Then-Else 문과 같이 조건에 맞는 값이 있으면 나머지는 더 이상 실행하지 않고 이 문을 빠져 나온다.

Sub SelectCaseTest()
   score = InputBox("점수를 입력하세요", "점수", 89)
   Select Case score
   Case Is >= 90
      MsgBox "당신 성적등급은 매우 잘함입니다."
   Case 80 to 90
      MsgBox "당신 성적등급은 잘함입니다."
   Case 70 to 80
      MsgBox "당신 성적등급은 보통입니다."
   Case 60 to 70
      MsgBox "당신 성적등급은 노력바람입니다."
   Case Else
      MsgBox "당신 성적등급은 매우 노력바람입니다."
   End Select
End Sub
반응형

'excel VBA' 카테고리의 다른 글

Function 프로시저  (0) 2023.08.30
Sub 프로시저  (0) 2023.08.30
엑셀 VBA 배열 사용법  (0) 2023.08.30
엑셀 VBA 문장 작성  (0) 2023.08.30
엑셀 변수와 상수  (0) 2023.08.30

댓글