• 최초 작성일: 2002-03-28
  • 최종 수정일: 2026-09-30
  • 조회수: 15 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 콤보박스 연동 차트 만들기

들어가기 전에

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

지난 시간에는 특정 셀을 선택하면 그 셀과 관련있는 정보들로 차트를 Updating하는 ActiveCell 연동 차트(Exceller가 붙여본 이름입니다 ^^)를 만들어 보았습니다. 이번 시간에는 약간 다른 형태의 재미있는 차트를 만들어 보도록 하지요. 이름하야 "콤보박스 연동 차트"(이것 역시 Exceller가 붙여본 이름입니다)…

일단 버튼을 눌러서 연습용 시트로 가신 다음 콤보 박스로 적당한 지역을 선택해 보세요.

지난 시간에 살펴본 'ActiveCell 연동 차트'와는 또다른 재미가 있지요?

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

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

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


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

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

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

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

콤보박스 연동 차트 만들기

핵심 요약: 콤보박스로 차트 갱신하기

콤보 상자를 셀에 연결하고 INDEX 함수로 선택한 지역의 데이터를 가져온 뒤, 콤보 상자에 매크로를 지정해 차트 제목과 안내 메시지를 함께 갱신합니다.

  • 1단계: 소스 데이터로 차트를 만들고 옵션을 차트에서 직접 지정합니다.
  • 2단계: 소스 테이블은 SelectionChange와 Intersect로 건드리지 못하게 합니다.
  • 3단계: 콤보 상자를 그려 입력 범위와 셀 연결을 지정하고 ChangeChart 매크로를 연결합니다.

Step 1: 소스 데이터로 차트 만들기

(1) 소스 데이터를 이용하여 차트를 만듭니다. 차트의 각종 옵션값을 VBA로 핸들링 할 수도 있고 차트 상에서 직접 바꾸어 줄 수도 있습니다. 여기서는 코드를 간결하게 하기 위해 차트 상에서 바로 고쳐주고 작업을 계속합니다.

Step 2: SelectionChange 이벤트 작성

(2) VB Editor 상태에서 프로젝트 탐색창을 더블 클릭하고 코드 창에서 SelectionChange 이벤트를 선택한 다음 아래와 같은 코드를 작성합니다.

많이 낯이 익은 코드이지요? ^^ 어디서 보았을까요? 그렇습니다! Intersect 메서드에 대해 설명을 드릴 때 였지요? 차트의 소스 테이블은 누가 와서 점수를 슬쩍 올려 놓는다든지 하면 안되니까 아예 건들지 못하도록 하기 위한 것입니다. Intersect 메서드가 뭐였더라? 하는 분들은 얼른 VB0146 강좌를 열어보고 오세요.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rngSelect As Range
    On Error Resume Next
    Set rngSelect = Intersect(Target, [Source])

    If Not rngSelect Is Nothing Then Target.Next.Select
End Sub

Step 3: 콤보 상자 삽입

(3) '양식' 도구 모음에 있는 '콤보 상자' 아이콘을 선택하고 차트 영역 내부의 적당한 곳에 콤보 박스를 하나 그려 넣습니다. '입력 범위'나 '셀 연결" 등의 항목은 아래 그림과 같이 설정합니다.

콤보 상자의 컨트롤 서식 대화상자: 입력 범위 $A$18:$A$27, 셀 연결 $A$3, 목록 표시 줄 수 8
아이엑셀러

Step 4: ChangeChart 프로시저

(4) 아래와 같은 코드를 작성합니다. 이 코드가 오늘 강좌의 핵심입니다.

Sub ChangeChart()
    Dim chtChartObject As ChartObject
    Dim chtChart As Chart
    Dim strArea As String
    Dim sngMax As Single
    Dim sngMin As Single
    Dim Msg As String
    Set chtChartObject = ActiveSheet.ChartObjects(1)
    Set chtChart = chtChartObject.Chart
    strArea = [Region]

    With chtChartObject.Chart
        .HasTitle = True
        .ChartTitle.Text = strArea & "지역 고객만족도 조사 결과"
    End With
    sngMax = Application.Max([ItemScore])
    sngMin = Application.Min([ItemScore])
    '''다른 부분은 지난 시간에 살펴본 것과 거의 다를 것이 없고… 차트 내의 최대값과
    '''최소값을 알아내기 위하여 워크시트 함수인 Max와 Min 함수를 사용하였습니다.

    MsgBox "선택하신 " & strArea & " 지역의" & vbCr & vbCr _
        & Space(5) & "최고 점수는 " & Format(sngMax, "#.0%") & vbCr _
        & Space(5) & "최저 점수는 " & Format(sngMin, "#.0%") & vbCr _
        & vbCr & "입니다", , "VB0150//www.iExceller.com"
End Sub

다른 부분은 지난 시간에 살펴본 것과 거의 다를 것이 없고… 차트 내의 최대값과 최소값을 알아내기 위하여 워크시트 함수인 Max와 Min 함수를 사용하였습니다.

Step 5: 매크로 연결

(5) 콤보 박스를 오른쪽 마우스 버튼으로 클릭한 다음 (4)에서 작성한 코드를 연결시킵니다.

콤보 상자를 마우스 오른쪽 버튼으로 눌러 매크로 지정 메뉴를 선택하는 화면
아이엑셀러

이제 콤보 박스를 클릭하여 지역을 선택하면 차트가 선택한 지역의 것으로 갱신되면서 안내 메시지 박스가 나타납니다.

콤보 상자에서 종로를 선택하자 차트가 갱신되고 최고·최저 점수 메시지 상자가 나타난 화면
아이엑셀러

많이 응용해 보시기 바랍니다.

오늘은 여기까지…

정리 — 콤보박스 연동 차트 핵심

구분 사용한 코드 역할
콤보 상자 설정 입력 범위 $A$18:$A$27, 셀 연결 $A$3 선택한 지역 번호를 셀에 저장
데이터 추출 =INDEX(A18:A27,$A$3) 선택한 지역의 값 표시
제목 변경 ChartTitle.Text = strArea & "지역 고객만족도 조사 결과" 차트 제목 갱신
최대·최소값 Application.Max/Min([ItemScore]) 메시지 표시용 값
보호 Intersect + Target.Next.Select 소스 테이블 선택 방지

자주 묻는 질문 (FAQ)

Q1. 콤보 상자는 어디에서 삽입하나요?

'양식' 도구 모음의 '콤보 상자' 아이콘을 선택해 차트 영역 내부에 그린 뒤 컨트롤 서식에서 입력 범위와 셀 연결을 지정합니다.

Q2. 차트 소스 테이블을 왜 선택하지 못하게 하나요?

누가 와서 점수를 슬쩍 올려 놓는 일을 막기 위해 Intersect 메서드와 SelectionChange 이벤트로 접근을 차단합니다.

Q3. 콤보 상자에 매크로는 어떻게 연결하나요?

콤보 상자를 마우스 오른쪽 버튼으로 눌러 '매크로 지정'을 선택하고 ChangeChart를 지정합니다.

마치며

차트에 컨트롤을 연결하면 사용자가 선택하는 대로 결과가 갱신되는 인터랙티브한 보고서를 만들 수 있습니다.