[VBA 제 23강] SelectCase문의 응용 썸네일 이미지
[VBA 제 23강] SelectCase문의 응용
콘텐츠 타입 MS 오피스 엑셀 2003(2007, 2010가능), Windows XP 이상
용량0KB
조회1,349
즐겨찾기
[VBA 제 23강] SelectCase문의 응용를 즐겨찾기 한 횟수는 0 0입니다.
이용등급 프리미엄
제품 상세정보

 




[ 기초 강좌 ]

 

제 23 강

SelectCase문의 응용

 

Excel의 생명이라고 할 수 있는 SelectCase문의 응용

그 사용법을 알아봅니다.


이럴 때 필요해요

 

해당시트의 특정 열의 범위에서 셀값이 변경되었을 때 또다른 특정 셀값이 나오게 할때 필요합니다.

이렇게 사용해요

앞서 소개해 드린 Worksheet_Change 라는 이벤트 프로시저를 약간 응용하여 재미있는것을 만들어 봤습니다.

 

아시는 바와 같이, Excel 강좌에서 소개해 드렸던 [조건부서식]기능으로는

3개의 조건까지만 설정할 수 있었습니다만 이것을 매크로를 사용하여 필요한

모든 조건에 따라 각기 다른 서식을 설정할 수 있습니다.

 

이번에는, 아래의 데이터에서 Worksheet_Change 이벤트 프로시저를 호출하여 해당시트의

특정 열(여기서는 B열)의 범위에서 셀값이 변경되면, 또다른 특정 프로시저를 실행하도록 코딩합니다.

 

 

 

1) 1) 먼저, 아래와 같이  Worksheet_Change이벤트 프로시저를 코딩합니다.

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Column = 2 Then

      SelectCase_Coloring Target.Value

    End If

End Sub

 

설명을 해드리자면.

 

 If Target.Column = 2 Then

이구문은.

앞에서는 어느 특정 셀이 Target이 었습니다만, 위와 같이 코딩해 주면 특정 열(B열) 전체의 셀들이 Target이 됩니다.

만약에 Target(즉, 값이 변경되는 셀)의 열 번호(Column)가 2 면, 즉 B열에서의 선택된 셀값이 변경되면

(이것은 B열이 아닌, 다른 열의 셀 값이 변경되는 경우 프로시저가 실행되지 않도록 하기 위한 사전조치입니다.) 

 

 SelectCase_Coloring Target.Value

Target의 값(Target.Value)에 따라 SelectCase_Coloring 이라는 이름의 또다른 프로시저를 호출하여  실행하게 됩니다.

 

 즉, 앞에서는 Worksheet_Change이벤트 프로시저에 필요한 코드를 모두 기록하여 특정 셀(Target)의 값이 변경되면 코드의

 내용을 실행하도록 했습니다만, 오늘 소개해 드리는 방법은 Worksheet_Change이벤트 프로시저에서 Target의 값이 변경되는

 즉시 또다른 프로시저(여기서는 SelectCase_Coloring 라는 이름의 모듈프로시저)를 불러 내어 실행하게 됩니다.

 

 

아래의 내용은 SelectCase_Coloring라는 이름의 모듈프로시저의 코드내용입니다.

 

Sub SelectCase_Coloring(sCity As String)

여기서 (sCity As String) 부분은 위 Worksheet_Change 이벤트 프로시저와의 연결고리라고 생각하시면 됩니다.

 

 Dim rngCell As Range

 Dim rngRange As Range

 Dim colorRange As Range

    On Error Resume Next

On Error Resume Next 라는 구문은 "에러가 발생하더라도 잔소리하지 말고 그냥 다음으로 넘어가라"는 명령입니다.

 

  Set rngRange = Columns(2).SpecialCells(xlTextValues)

rngRange라는 변수에 대해 2열에서 값이 있는 영역(SpecialCells(xlTextValues))으로 정의해 줍니다.

 

 [Start].CurrentRegion.Interior.ColorIndex = xlNone

먼저, Start 라는 [이름정의]된 셀(B7) 주변영역(CurrentRegion)의 색상을 모두 지웁니다.

 

  For Each rngCell In rngRange

For Each 문으로 위에서 rngRange라는 변수로 정의된 범위를 순환합니다.

 

  Set colorRange = Range(rngCell, rngCell.Offset(0, 2))

변수 colorRange에 대해 rngCell부터 rngCell의 오른쪽 2칸까지(Offset(0, 2))범위임을 정의해 줍니다.

 

  Select Case rngCell

아래와 같이 각 Case별로 조건(즉, 각 도시명에 따른 색상번호)을 Select Case문 형식으로 지정합니다.

 (Select Case문의 사용방법 등에 대해서는 오래전에 설명드린 기억이 있으므로 생략합니다.)

 

  Case "서울"
  colorRange.Interior.ColorIndex = 15
 
  Case "부산"
  colorRange.Interior.ColorIndex = 44

 

  Case "대구"
  colorRange.Interior.ColorIndex = 24
 
  Case "광주"
  colorRange.Interior.ColorIndex = 6
 
  Case "인천"
  colorRange.Interior.ColorIndex = 46
 
  Case "울산"
  colorRange.Interior.ColorIndex = 37
 
  Case "대전"
  colorRange.Interior.ColorIndex = 43
 
  Case "마산"
  colorRange.Interior.ColorIndex = 19
 
  Case "진주"
  colorRange.Interior.ColorIndex = 8
 
  Case "목포"
  colorRange.Interior.ColorIndex = 40
 
  Case "청주"
  colorRange.Interior.ColorIndex = 38
 
  Case "일산"
  colorRange.Interior.ColorIndex = 39
 
 Case Else

 End Select

  Next rngCell
 End Sub

 

 

이렇게 해서, "서울","부산", "대구","광주", … 등 12개의 도시명에 대해 예전에 배웠던 [조건부 서식]에서와 같은 결과를

구했습니다. 참고로, 여기서는 편의상 12개의 조건에 대해서만 서식을 지정해 주었습니다만, Select Case 문을 사용하여

필요한 조건의 수 만큼 서식을 정의해 줄 수도 있겠죠?

 

 

 

 

저작권정보
1. 콘텐츠의 저작권은 쿠키(www.coukey.co.kr)에 있으며, 사용권한은 1인 1카피입니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
[VBA 제 23강] SelectCase문의 응용
이용후기

업무자동화 맞춤제작

고객님의 상황에 100% 맞춘 콘텐츠 제작 전문 서비스를 이용해 보세요.
프리미엄 무료 이벤트 중