VBA 가이드 – 차트 및 그래프
In this Article
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 범위가 있습니다:
Charts.Add 메서드를 사용하여 차트를 만들 수 있습니다. 다음 코드는 차트 시트에 차트를 생성합니다:
Sub InsertingAChartOnItsOwnChartSheet()
Sheets("Sheet1").Range("A1:B6").Select
Charts.Add
End Sub
The result is:
차트와 관련된 다른 튜토리얼도 아래 링크를 통해 확인해 보세요: