VBA 가이드 – 차트 및 그래프

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 1, 2023

Excel 차트와 그래프는 데이터를 시각적으로 보여주기 위해 사용됩니다. 이 튜토리얼에서는 VBA를 사용하여 차트 및 차트 요소를 만들고 조작하는 방법을 다룹니다.

워크시트에 차트를 만들거나 차트 시트에 차트를 만들 수 있습니다.

VBA를 사용하여 워크시트에 차트 만들기

아래와 같이 소스 데이터가 포함된 A1:B4 범위가 있습니다:

ChartObjects.Add 메서드를 사용하여 차트를 만들 수 있습니다. 다음 코드는 워크시트에 차트를 생성합니다:

Sub CreateEmbeddedChartUsingChartObject()

Dim embeddedchart As ChartObject

Set embeddedchart = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")

End Sub

실행 결과는 다음과 같습니다:

Shapes.AddChart 메서드를 사용하여 차트를 만들 수도 있습니다. 다음 코드는 워크시트에 차트를 생성합니다:

Sub CreateEmbeddedChartUsingShapesAddChart()

Dim embeddedchart As Shape

Set embeddedchart = Sheets("Sheet1").Shapes.AddChart
embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")

End Sub

VBA를 사용하여 차트 유형 지정하기

아래와 같이 소스 데이터가 포함된 A1:B5 범위가 있습니다:

차트 유형 속성을 사용하여 차트 유형을 지정할 수 있습니다. 다음 코드는 차트 유형 속성이 xlPie로 설정되어 있으므로 워크시트에 원형 차트를 생성합니다:

Sub SpecifyAChartType()

Dim chrt As ChartObject

Set chrt = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)
chrt.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")
chrt.Chart.ChartType = xlPie

End Sub

결과는 다음과 같습니다:

아래는 일반적으로 자주 사용하는 차트 유형입니다(이 외에도 다른 차트 유형도 있습니다) :

  • xlArea
  • xlPie
  • xlLine
  • xlRadar
  • xlXYScatter
  • xlSurface
  • xlBubble
  • xlBarClustered
  • xlColumnClustered

VBA를 사용하여 차트 제목 추가하기

예제 수행을 위해 아래와 같이 워크시트에서 차트를 선택했습니다:

먼저 차트 제목을 추가하려면 Chart.SetElement 메서드를 사용하여 차트 제목을 추가한 다음 ChartTitle.Text 속성을 설정하여 차트 제목의 텍스트를 지정해야 합니다.

다음 코드는 차트 제목을 추가하고 활성 차트 제목의 텍스트를 지정하는 방법을 보여줍니다:

Sub AddingAndSettingAChartTitle()

ActiveChart.SetElement (msoElementChartTitleAboveChart)
    ActiveChart.ChartTitle.Text = "제품 판매량"
    
End Sub

결과는 아래와 같습니다:

참고: 코드에서 ActiveChart 객체를 사용하려면 먼저 차트를 선택하여 활성 차트로 만들어야 합니다.

VBA를 사용하여 차트 배경색 변경하기

예제 수행을 위해 아래 그림과 같이 워크시트에서 차트를 선택했습니다:

ChartArea 개체의 FillFormat 개체의 RGB 속성을 설정하여 전체 차트의 배경색을 변경할 수 있습니다. 다음 코드는 차트에 밝은 주황색 배경색을 지정합니다:

Sub AddingABackgroundColorToTheChartArea()

ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)

End Sub

결과는 다음과 같습니다:

ChartArea 개체의 Interior 개체의 ColorIndex 속성을 설정하여 전체 차트의 배경색을 변경할 수도 있습니다. 다음 코드는 차트에 주황색 배경색을 지정합니다:

Sub AddingABackgroundColorToTheChartArea()

ActiveChart.ChartArea.Interior.ColorIndex = 40

End Sub

결과는 다음과 같습니다:

참고: ColorIndex 속성을 사용하면 사전 설정 색상표에서 가져온 1에서 56 사이의 값을 기준으로 색상을 지정할 수 있습니다. 다른 색상을 나타내는 값을 확인하려면 여기를 클릭하세요.

VBA를 사용하여 차트 플롯 영역 색상 변경하기

예제 수행을 위해 아래와 같이 워크시트에서 차트를 선택했습니다:

PlotArea 개체의 FillFormat 개체의 RGB 속성을 설정하여 차트의 플롯 영역의 배경색만 변경할 수 있습니다. 다음 코드는 차트의 플롯 영역에 밝은 녹색 배경색을 부여합니다:

Sub AddingABackgroundColorToThePlotArea()

ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)
    
End Sub

결과는 다음과 같습니다:

VBA를 사용하여 범례 추가하기

예제를 위해 아래와 같이 워크시트에서 차트를 선택했습니다:

Chart.SetElement 메서드를 사용하여 범례를 추가할 수 있습니다. 다음 코드는 차트 왼쪽에 범례를 추가합니다:

Sub AddingALegend()

ActiveChart.SetElement (msoElementLegendLeft)

End Sub

결과는 다음과 같습니다:

다음과 같은 방법으로 범례의 위치를 지정할 수 있습니다:

  • msoElementLegendLeft – 차트의 왼쪽에 범례를 표시합니다.
  • msoElementLegendLeftOverlay – 차트의 왼쪽에 범례를 오버레이합니다.
  • msoElementLegendRight – 차트의 오른쪽에 범례를 표시합니다.
  • msoElementLegendRightOverlay – 차트의 오른쪽에 범례를 오버레이합니다.
  • msoElementLegendBottom – 차트 하단에 범례를 표시합니다.
  • msoElementLegendTop – 차트 상단에 범례를 표시합니다.
*오버레이 : 범례를 위한 공간을 따로 만들지 않고 차트 영역위에 덮어씌운다는 의미입니다.

VBA를 사용하여 데이터 레이블 추가

에제를 위해 아래 그림과 같이 워크시트에서 차트를 선택했습니다:

Chart.SetElement 메서드를 사용하여 데이터 레이블을 추가할 수 있습니다. 다음 코드는 차트의 안쪽 끝에 데이터 레이블을 추가합니다:

Sub AddingADataLabels()

ActiveChart.SetElement msoElementDataLabelInsideEnd

End Sub

결과는 다음과 같습니다:

다음과 같은 방법으로 데이터 레이블의 위치 지정 방법을 지정할 수 있습니다:

  • msoElementDataLabelShow – 데이터 레이블을 표시합니다.
  • msoElementDataLabelRight – 차트 오른쪽에 데이터 레이블을 표시합니다.
  • msoElementDataLabelLeft – 차트 왼쪽에 데이터 레이블을 표시합니다.
  • msoElementDataLabelTop – 차트 상단에 데이터 레이블을 표시합니다.
  • msoElementDataLabelBestFit – 가장 적합한 위치를 결정하여 레이블을 표시합니다.
  • msoElementDataLabelBottom – 차트 하단에 데이터 레이블을 표시합니다.
  • msoElementDataLabelCallout – 설명선을 달고 그 안에 레이블을 표시합니다
  • msoElementDataLabelCenter – 데이터 레이블을 중앙에 표시합니다.
  • msoElementDataLabelInsideBase – 내부에 데이터 레이블을 표시합니다.
  • msoElementDataLabelOutSideEnd – 차트의 바깥쪽 끝에 데이터 레이블을 표시합니다.
  • msoElementDataLabelInsideEnd – 차트의 안쪽 끝에 데이터 레이블을 표시합니다.

VBA에서 X축 및 축 제목 추가하기

예시를 위해 아래 그림과 같이 워크시트에서 차트를 선택했습니다:

Chart.SetElement 메서드를 사용하여 X축 및 X축 제목을 추가할 수 있습니다. 다음 코드는 차트에 X축과 X축 제목을 추가합니다:

Sub AddingAnXAxisandXTitle()

With ActiveChart
.SetElement msoElementPrimaryCategoryAxisShow
.SetElement msoElementPrimaryCategoryAxisTitleHorizontal
End With


End Sub

결과는 다음과 같습니다:

VBA에서 Y축과 축 제목 추가하기

예제를 위해 아래와 같이 워크시트에서 차트를 선택했습니다:

Chart.SetElement 메서드를 사용하여 Y축 및 Y축 제목을 추가할 수 있습니다. 다음 코드는 차트에 Y축과 Y축 제목을 추가합니다:

Sub AddingAYAxisandYTitle()

With ActiveChart
.SetElement msoElementPrimaryValueAxisShow
.SetElement msoElementPrimaryValueAxisTitleHorizontal
End With
End Sub

결과는 다음과 같습니다:

축의 숫자 형식 변경하기

예제를 위해 아래와 같이 워크시트에서 차트를 선택했습니다:

축의 숫자 형식을 변경할 수 있습니다. 다음 코드는 Y축의 숫자 형식을 통화로 변경합니다:

Sub ChangingTheNumberFormat()

ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"

End Sub

결과는 다음과 같습니다:

차트에서 글꼴 서식 변경하기

예제를 위해 아래와 같이 워크시트에서 다음 차트를 선택했습니다:

글꼴 객체를 참조하고 글꼴 이름, 글꼴 굵기 및 크기를 변경하여 전체 차트 글꼴의 서식을 변경할 수 있습니다. 다음 코드는 전체 차트의 글꼴 유형, 굵기 및 크기를 변경합니다.

Sub ChangingTheFontFormatting()

With ActiveChart


.ChartArea.Format.TextFrame2.TextRange.Font.Name = "궁서체"
.ChartArea.Format.TextFrame2.TextRange.Font.Bold = True
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14

End With

결과는 다음과 같습니다:

VBA를 사용하여 차트 삭제하기

예제를 위해 아래와 같이 워크시트에서 다음 차트를 선택했습니다:

이 차트를 삭제하기 위해 다음 코드를 사용할 수 있습니다:

Sub DeletingTheChart()

ActiveChart.Parent.Delete

End Sub

차트 객체 컬렉션 참조하기

워크시트 또는 통합 문서에 내장된 모든 차트는 ChartObjects 컬렉션을 참조하여 액세스할 수 있습니다. 아래에는 동일한 시트에 두 개의 차트가 있습니다:

워크시트의 두 차트에 동일한 높이와 너비를 지정하고, 격자선을 삭제하고, 배경색을 동일하게 만들고, 차트에 동일한 그림 영역 색을 지정하고, 그림 영역 선 색을 동일하게 만들기 위해 ChartObjects 컬렉션을 참조할 것입니다:

Sub ReferringToAllTheChartsOnASheet()

Dim cht As ChartObject

For Each cht In ActiveSheet.ChartObjects
cht.Height = 144.85
cht.Width = 246.61

cht.Chart.Axes(xlValue).MajorGridlines.Delete
cht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)
cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)

Next cht

End Sub

결과는 다음과 같습니다:

 

차트 시트에 차트 삽입하기

예제를 위해 아래와 같이 소스 데이터가 포함된 A1:B6 범위가 있습니다:

Source Range For Chart Sheet

Charts.Add 메서드를 사용하여 차트를 만들 수 있습니다. 다음 코드는 차트 시트에 차트를 생성합니다:

Sub InsertingAChartOnItsOwnChartSheet()

Sheets("Sheet1").Range("A1:B6").Select
Charts.Add

End Sub

The result is:

차트와 관련된 다른 튜토리얼도 아래 링크를 통해 확인해 보세요:

Charts in Excel

Create a Bar Chart in VBA

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기

AI in the VBA Editor!

AutoMacro is the ultimate VBA add-in.

AI, Generators, UI Builders, Code Library, and More!

Learn More

AutoMacro: AI in the VBA Editor!

Learn More