• 최초 작성일: 2025-01-23
  • 최종 수정일: 2026-09-29
  • 조회수: 14 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA 파워 코딩 241회 - 분기별 강조 차트

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

월별 실적을 분기 단위로 묶어서 차트로 보여줄 때, 보고 싶은 분기만 쏙 골라서 강조해서 볼 수 있다면 훨씬 보기 편하겠죠? 이번 시간에는 옵션 버튼(Option Button)을 클릭하면 선택한 분기의 막대만 진하게 표시되고, 나머지 분기는 흐리게 처리되는 차트를 VBA로 만들어 보겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

옵션 버튼으로 분기별 실적을 강조하는 차트 만들기

핵심 요약: 옵션 버튼으로 분기별 실적을 강조하는 차트

옵션 버튼의 Click 이벤트에서 ShowQuarterly 프로시저를 호출하여, 선택한 분기 계열의 Format.Fill.Transparency는 0으로, 나머지 계열은 0.9로 설정해 강조 효과를 줍니다.

  • 트리거: OptionButton1~4의 Click 이벤트
  • 강조 방식: 선택 계열 투명도 0%, 나머지 90%
  • 부가 효과: ChartTitle.Text로 차트 제목 변경
  • 주의: 차트 개체 이름("MyChart")이 실제 이름과 일치해야 함

분기별 강조 차트 동작 살펴보기

1월부터 12월까지의 월별 실적을 4개의 분기 계열로 나누어 차트에 표시했습니다. 처음에는 모든 분기가 동일하게 표시됩니다.

1분기부터 4분기까지 모든 계열이 동일하게 표시된 차트
아이엑셀러

차트 아래의 옵션 버튼 중 하나를 클릭하면, 선택한 분기의 막대만 선명하게(투명도 0%) 표시되고 나머지 분기는 흐리게(투명도 90%) 바뀌면서 차트 제목도 "N분기 실적"으로 바뀝니다. 예를 들어 '2분기 실적' 옵션 버튼을 클릭하면 다음과 같이 표시됩니다.

2분기 실적 옵션 버튼을 클릭하여 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 입문강좌'를 읽어보시면 이해가 빠릅니다.