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 코드 예시로 돌아가기