엑셀 VBA에서 차트(Chart) 개체는 데이터를 시각적으로 표현하는 그래프를 조작하는 개체입니다.
VBA를 사용하면 차트를 생성, 수정, 삭제, 형식 변경, 데이터 업데이트 등을 자동화할 수 있습니다.
1. 차트 개체 계층 구조
개체
|
설명
|
Charts
|
통합 문서(Workbook) 내 모든 차트 시트(Chart Sheet) 컬렉션
|
ChartObjects
|
워크시트(Worksheet) 내 삽입된 모든 차트 개체
|
ChartObject
|
워크시트에 삽입된 개별 차트
|
Chart
|
차트 개체 자체 (제목, 축, 시리즈 포함)
|
SeriesCollection
|
차트에 포함된 데이터 시리즈(Series) 컬렉션
|
Series
|
개별 데이터 시리즈
|
2. 차트 생성
📌 기본 차트 삽입 (워크시트 내)
Sub 차트_생성()
Dim ws As Worksheet
Dim chartObj As ChartObject
' 차트를 삽입할 워크시트 지정
Set ws = ActiveSheet
' 차트 추가 (위치: B2 ~ J15)
Set chartObj = ws.ChartObjects.Add(Left:=50, Top:=50, Width:=400, Height:=300)
' 차트 유형 변경 (꺾은선 그래프)
chartObj.Chart.ChartType = xlLine
' 데이터 범위 설정
chartObj.Chart.SetSourceData Source:=ws.Range("A1:B10")
' 차트 제목 추가
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "매출 현황"
MsgBox "차트가 생성되었습니다!"
End Sub
|
📌 설명
- ChartObjects.Add → 워크시트에 임베디드 차트 삽입
- .ChartType = xlLine → 꺾은선 그래프 설정
- .SetSourceData Source:=ws.Range("A1:B10") → 데이터 범위 설정
- .HasTitle = True & .ChartTitle.Text → 차트 제목 설정
📌 차트 시트(Chart Sheet) 생성
Sub 차트_시트_추가()
Dim chartSheet As Chart
' 차트 시트 추가
Set chartSheet = ThisWorkbook.Charts.Add
' 차트 유형 설정 (막대 그래프)
chartSheet.ChartType = xlColumnClustered
' 데이터 범위 설정
chartSheet.SetSourceData Source:=Sheets("데이터").Range("A1:B10")
' 차트 제목 추가
chartSheet.HasTitle = True
chartSheet.ChartTitle.Text = "매출 분석"
MsgBox "차트 시트가 생성되었습니다!"
End Sub
|
📌 차트 시트를 추가하여 전체 화면에 표시되는 차트 생성
3. 차트 유형 변경
Sub 차트_유형_변경()
ActiveSheet.ChartObjects(1).Chart.ChartType = xlPie ' 파이 차트로 변경
End Sub
|
📌 .ChartType = xlPie → 차트 유형을 파이 차트로 변경
✅ 주요 차트 유형 목록
차트 유형
|
코드
|
세로 막대형
|
xlColumnClustered
|
가로 막대형
|
xlBarClustered
|
꺾은선형
|
xlLine
|
파이형
|
xlPie
|
영역형
|
xlArea
|
분산형
|
xlXYScatter
|
4. 차트 제목 및 축 설정
📌 차트 제목 변경
Sub 차트_제목_변경()
Dim ch As Chart
Set ch = ActiveSheet.ChartObjects(1).Chart
ch.HasTitle = True
ch.ChartTitle.Text = "업데이트된 차트 제목"
End Sub
|
📌 축 제목 추가
Sub 차트_축제목_추가()
Dim ch As Chart
Set ch = ActiveSheet.ChartObjects(1).Chart
' X축 제목 추가
ch.Axes(xlCategory, xlPrimary).HasTitle = True
ch.Axes(xlCategory, xlPrimary).AxisTitle.Text = "년도"
' Y축 제목 추가
ch.Axes(xlValue, xlPrimary).HasTitle = True
ch.Axes(xlValue, xlPrimary).AxisTitle.Text = "매출액"
End Sub
|
📌 xlCategory → X축, xlValue → Y축
📌 .AxisTitle.Text = "제목" → 축 제목 설정
5. 데이터 시리즈 추가/수정
📌 데이터 시리즈 추가
Sub 데이터_시리즈_추가()
Dim ch As Chart
Set ch = ActiveSheet.ChartObjects(1).Chart
' 새로운 데이터 시리즈 추가
ch.SeriesCollection.NewSeries
ch.SeriesCollection(2).XValues = ActiveSheet.Range("A1:A10") ' X축 데이터
ch.SeriesCollection(2).Values = ActiveSheet.Range("C1:C10") ' Y축 데이터
ch.SeriesCollection(2).Name = "이익"
End Sub
|
📌 .SeriesCollection.NewSeries → 새로운 데이터 시리즈 추가
📌 .XValues = Range() → X축 데이터 설정
📌 .Values = Range() → Y축 데이터 설정
📌 기존 데이터 시리즈 변경
Sub 데이터_시리즈_변경()
Dim ch As Chart
Set ch = ActiveSheet.ChartObjects(1).Chart
ch.SeriesCollection(1).Values = ActiveSheet.Range("B1:B10") ' Y축 데이터 변경
End Sub
|
📌 .SeriesCollection(1).Values = Range("범위") → 기존 데이터 변경
6. 차트 서식 변경
📌 차트 배경 색 변경
Sub 차트_배경색_변경()
ActiveSheet.ChartObjects(1).Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(240, 240, 240)
End Sub
|
📌 .ChartArea.Format.Fill.ForeColor.RGB = RGB(색상) → 배경 색 변경
📌 차트 테두리 색 변경
Sub 차트_테두리_변경()
ActiveSheet.ChartObjects(1).Chart.ChartArea.Border.Color = RGB(0, 0, 255) ' 파란색 테두리
End Sub
|
📌 .ChartArea.Border.Color = RGB(색상) → 테두리 색 변경
7. 차트 삭제
Sub 차트_삭제()
Dim chObj As ChartObject
For Each chObj In ActiveSheet.ChartObjects
chObj.Delete
Next chObj
End Sub
|
📌 현재 시트의 모든 차트 삭제
📝 정리
작업
|
VBA 코드
|
차트 생성 (워크시트 내)
|
ChartObjects.Add
|
차트 생성 (차트 시트)
|
Charts.Add
|
차트 유형 변경
|
.ChartType = xlPie
|
차트 제목 설정
|
.ChartTitle.Text = "제목"
|
축 제목 설정
|
.Axes(xlCategory).AxisTitle.Text = "X축 제목"
|
데이터 추가
|
.SeriesCollection.NewSeries
|
배경색 변경
|
.ChartArea.Format.Fill.ForeColor.RGB = RGB(255,255,255)
|
차트 삭제
|
.Delete
|
🔥 VBA를 활용하면 차트 자동화를 통해 보고서를 빠르고 효율적으로 만들 수 있습니다! 🚀