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
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