[ 기초 강좌 ]
제 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 "서울"
Case "대구" End Select Next rngCell |
이렇게 해서, "서울","부산", "대구","광주", … 등 12개의 도시명에 대해 예전에 배웠던 [조건부 서식]에서와 같은 결과를
구했습니다. 참고로, 여기서는 편의상 12개의 조건에 대해서만 서식을 지정해 주었습니다만, Select Case 문을 사용하여
필요한 조건의 수 만큼 서식을 정의해 줄 수도 있겠죠?
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.