Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Conditional Structure|Select Case|Select Case|Case|End Select|If|

If~Then~ElseIf문과 더불어 융통성있는 조건분석명령문이다

Select Case Expression
    Case:
    Case:
   ...
End Select

와 같이 하나의 Block을 이루고 있는 Decision Block이라고 할수 있다
특히 If~Then~ElseIf에서 ElseIf문이 반복하여 많이 사용될때는
Select Case 문이 훨씬 효율적이다
또한 같은 표현식을 통한 다양한 틀린값을 비교할때 코드의 가독성도
높이고 효율적인것이다
아래와 같이 A1셀의 값(같은 표현식)을 읽어서 각각의 값에 따른
작업을 틀리게 할때 ElseIf문이 반복하여 들어가는 것보다 좋은것이다
A1의 값이 1일때 열방향으로 1개의 범위에 빨강색을 칠한다
A1의 값이 2일때 열방향으로 2개의 범위에 노랑색을 칠한다
A1의 값이 3일때..
A1의 값이 4일때..
이런 식으로 A1의 값을 얻는 하나의 표현식

Range("A1").Value

에서 얻어지는 값으로 작업을 결정해 나가도록 한다

Dim iX As Integer,lColor As Long
Dim iY As Integer
Dim sX As String
Dim rngPaint As Range
Select Case Range("A1").Value
    Case 1:iX=1:iY=1*2:sX="One":lColor=3
    Case 2:iX=2:iY=2*2:sX="Two":lColor=5
    Case 3:iX=3:iY=3*2:sX="Three":lColor=6
    Case 4:iX=4:iY=4*2:sX="Four":lColor=7
    Case Else:iX=5:iY=8:sX="All":lColor=10
End Select
Range(Range("A1"),Range("A1"). _
Cells(iX,iY)).Interior.ColorIndex
= lColor Range(Range("A1"),Range("A1").Cells(iX,iY)).Value=sX

같은 작업내용을 If문과 Select Case 문으로 보자

If~ElseIf~End If Decision Block Statement
Function getPrice(sFruit As String)
Dim lPrice As Long
If sFruit = "사과" Then
     lPrice = 1000
ElseIf sFruit = "오렌지" Then
     lPrice = 1500
ElseIf sFruit = "바나나" Then
     lPrice = 2000
Else
     lPrice = 0
End If
getPrice =Iif(lPrice = 0, "해당없습니다", _
sFruit & "는 " & lPrice & "원입니다") End Function


Select Decision Block