- 최초 작성일: 2025-01-23
- 최종 수정일: 2026-09-29
- 조회수: 14 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA 파워 코딩 241회 - 분기별 강조 차트
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
월별 실적을 분기 단위로 묶어서 차트로 보여줄 때, 보고 싶은 분기만 쏙 골라서 강조해서 볼 수 있다면 훨씬 보기 편하겠죠? 이번 시간에는 옵션 버튼(Option Button)을 클릭하면 선택한 분기의 막대만 진하게 표시되고, 나머지 분기는 흐리게 처리되는 차트를 VBA로 만들어 보겠습니다.
옵션 버튼으로 분기별 실적을 강조하는 차트 만들기
핵심 요약: 옵션 버튼으로 분기별 실적을 강조하는 차트
옵션 버튼의 Click 이벤트에서 ShowQuarterly 프로시저를 호출하여, 선택한 분기 계열의 Format.Fill.Transparency는 0으로, 나머지 계열은 0.9로 설정해 강조 효과를 줍니다.
- 트리거: OptionButton1~4의 Click 이벤트
- 강조 방식: 선택 계열 투명도 0%, 나머지 90%
- 부가 효과: ChartTitle.Text로 차트 제목 변경
- 주의: 차트 개체 이름("MyChart")이 실제 이름과 일치해야 함
분기별 강조 차트 동작 살펴보기
1월부터 12월까지의 월별 실적을 4개의 분기 계열로 나누어 차트에 표시했습니다. 처음에는 모든 분기가 동일하게 표시됩니다.
차트 아래의 옵션 버튼 중 하나를 클릭하면, 선택한 분기의 막대만 선명하게(투명도 0%) 표시되고 나머지 분기는 흐리게(투명도 90%) 바뀌면서 차트 제목도 "N분기 실적"으로 바뀝니다. 예를 들어 '2분기 실적' 옵션 버튼을 클릭하면 다음과 같이 표시됩니다.
옵션 버튼 이벤트 코드 작성하기
(1) 워크시트에 옵션 버튼(양식 컨트롤 또는 ActiveX 컨트롤) 4개를 삽입하고, 각각 OptionButton1~OptionButton4라는 이름을 지정합니다.
(2) 시트 개체(Sheet1)의 코드 창에 다음과 같이 각 옵션 버튼의 Click 이벤트 프로시저를 작성합니다. 옵션 버튼을 클릭하면 번호를 인수로 하여 공통 프로시저 ShowQuarterly를 호출합니다.
Private Sub OptionButton1_Click()
ShowQuarterly 1
End Sub
Private Sub OptionButton2_Click()
ShowQuarterly 2
End Sub
Private Sub OptionButton3_Click()
ShowQuarterly 3
End Sub
Private Sub OptionButton4_Click()
ShowQuarterly 4
End Sub
ShowQuarterly 프로시저 작성하기
(3) 표준 모듈(Module1)에 다음 코드를 입력합니다. 인수로 전달된 분기 번호(intX)에 따라 Select Case 문으로 분기하여, 해당 분기 계열의 투명도(Format.Fill.Transparency)는 0으로, 나머지 계열은 0.9로 설정하고 차트 제목을 바꿉니다.
Sub ShowQuarterly(intX)
Dim chtChart As Chart
Dim objSeries As Series
ActiveSheet.ChartObjects("MyChart").Activate
Set chtChart = ActiveChart
For Each objSeries In chtChart.SeriesCollection
Select Case intX
Case 1
With ActiveChart
.FullSeriesCollection(1).Format.Fill.Transparency = 0
.FullSeriesCollection(2).Format.Fill.Transparency = 0.9
.FullSeriesCollection(3).Format.Fill.Transparency = 0.9
.FullSeriesCollection(4).Format.Fill.Transparency = 0.9
.ChartTitle.Text = "1분기 실적"
End With
Case 2
With ActiveChart
.FullSeriesCollection(1).Format.Fill.Transparency = 0.9
.FullSeriesCollection(2).Format.Fill.Transparency = 0
.FullSeriesCollection(3).Format.Fill.Transparency = 0.9
.FullSeriesCollection(4).Format.Fill.Transparency = 0.9
.ChartTitle.Text = "2분기 실적"
End With
Case 3
With ActiveChart
.FullSeriesCollection(1).Format.Fill.Transparency = 0.9
.FullSeriesCollection(2).Format.Fill.Transparency = 0.9
.FullSeriesCollection(3).Format.Fill.Transparency = 0
.FullSeriesCollection(4).Format.Fill.Transparency = 0.9
.ChartTitle.Text = "3분기 실적"
End With
Case Else
With ActiveChart
.FullSeriesCollection(1).Format.Fill.Transparency = 0.9
.FullSeriesCollection(2).Format.Fill.Transparency = 0.9
.FullSeriesCollection(3).Format.Fill.Transparency = 0.9
.FullSeriesCollection(4).Format.Fill.Transparency = 0
.ChartTitle.Text = "4분기 실적"
End With
End Select
Next objSeries
Range("D14").Select
End Sub
여기서 주의할 점! 코드의 ActiveSheet.ChartObjects("MyChart") 부분은 차트 개체의 이름입니다. 차트를 선택했을 때 이름 상자에 표시되는 이름과 일치해야 하므로, 실제 차트 이름이 다르다면 이 부분을 수정해 주세요.
참고: 투명도(Transparency) 값
Format.Fill.Transparency는 0(0%, 완전 불투명)부터 1(100%, 완전 투명) 사이의 값을 가집니다. 강조하고 싶은 계열은 0으로, 흐리게 하고 싶은 계열은 0.9 정도로 설정하면 자연스럽게 강조 효과를 줄 수 있습니다.
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 당시 화면 구성을 재구성한 예시 이미지이며, 실제 엑셀 화면과 세부 디자인(버전별 UI)은 다를 수 있습니다.
정리 — 분기별 강조 차트 동작 방식
| 항목 | 내용 |
|---|---|
| 트리거 | 옵션 버튼(OptionButton1~4)의 Click 이벤트 |
| 공통 프로시저 | ShowQuarterly(intX) — 선택된 분기 번호를 인수로 전달 |
| 강조 방식 | 선택 계열 Transparency = 0, 나머지 계열 Transparency = 0.9 |
| 부가 효과 | ChartTitle.Text를 "N분기 실적"으로 변경 |
자주 묻는 질문 (FAQ)
Q1. 옵션 버튼을 클릭했는데 차트가 바뀌지 않습니다.
차트 개체 이름이 코드의 "MyChart"와 일치해야 합니다. 차트를 선택한 뒤 이름 상자에서 차트 개체 이름을 확인하고, 다르다면 코드의 ActiveSheet.ChartObjects("MyChart") 부분을 실제 차트 이름으로 바꿔 주세요.
Q2. 계열이 4개보다 적거나 많으면 어떻게 되나요?
코드에서는 FullSeriesCollection(1)부터 (4)까지 4개의 계열을 기준으로 작성되어 있습니다. 계열 수가 다르다면 Select Case 문의 각 항목에서 참조하는 계열 번호와 개수를 실제 계열 수에 맞게 수정해야 합니다.
Q3. 투명도(Transparency) 값의 범위는 어떻게 되나요?
0(0%, 완전 불투명)부터 1(100%, 완전 투명) 사이의 값을 사용합니다. 이 예제에서는 강조할 계열은 0으로, 나머지는 0.9(90% 투명)로 설정하여 흐리게 표시합니다.
마치며
계열의 투명도만 잘 활용해도 클릭 한 번으로 원하는 데이터를 강조해서 보여주는 인터랙티브한 차트를 만들 수 있습니다. 보고서나 대시보드에 응용해 보세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.