Chart 개체

차트(Chart)

노만e 2025. 3. 11. 06:18

엑셀 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를 활용하면 차트 자동화를 통해 보고서를 빠르고 효율적으로 만들 수 있습니다! 🚀