본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA for 엑셀

VBA 코드를 활용한 엑셀 차트 생성 및 서식 지정 방법

by 포탈메이커 2023. 6. 26.

VBA 코드를 활용한 엑셀 차트 생성 및 서식 지정 방법

엑셀은 데이터를 시각적으로 표현하기에 좋은 차트 기능을 가지고 있습니다. 하지만 수 많은 데이터를 다루다 보면 차트를 하나씩 만들어야 하는 번거로움이 있습니다. 이때 VBA 코드를 사용하면 효율적으로 대량의 차트를 생성하고 서식을 지정할 수 있습니다.

1. 차트 객체 생성하기

먼저 VBA에서 차트를 생성하기 위해서는 ChartObject 객체를 만들어야 합니다. 아래 코드를 통해 바로 시작해봅시다.

Dim myChart As ChartObject
Set myChart = ActiveSheet.ChartObjects.Add(Left:=100, Width:=400, Top:=75, Height:=225)

위 코드에서 ActiveSheet는 차트를 생성할 엑셀 시트를 나타냅니다. ChartObjects.Add 메서드를 사용하여 새로운 차트 객체를 생성하고 myChart 변수에 할당합니다. Left, Width, Top, Height 매개변수는 차트가 생성될 위치와 크기를 지정합니다.


2. 차트 데이터 지정하기

차트를 만들기 위해선 데이터가 필요합니다. 아래 코드를 통해 데이터를 생성해봅시다.

Dim myData As Range
Set myData = Range("A1:C4")

위 코드에서 Range를 사용하여 엑셀 시트에서 데이터를 가져옵니다. A1:C4은 데이터가 있는 셀 범위입니다.

그 다음 myChart 객체에 데이터를 연결해줍니다.

myChart.Chart.SetSourceData Source:=myData

Chart.SetSourceData 메서드를 사용하여 myChart 객체에 데이터를 할당합니다.


3. 차트 유형 설정하기

이제 차트 유형을 설정해봅시다. 아래 코드를 통해 차트 유형을 변경할 수 있습니다.

myChart.Chart.ChartType = xlLineMarkers

위 코드에서 ChartType 속성을 사용하여 차트의 유형을 변경합니다. xlLineMarkers은 선과 마커 표시가 있는 차트 유형입니다.


4. 범례 설정하기

범례는 차트에서 데이터 시리즈를 식별할 수 있도록 돕는 역할을 합니다. 아래 코드를 사용하여 범례를 추가해봅시다.

myChart.Chart.HasLegend = True
myChart.Chart.Legend.Position = xlLegendPositionBottom

위 코드에서 HasLegend 속성을 True로 설정하여 차트에 범례를 보이도록 합니다. 그리고 xlLegendPositionBottom을 사용하여 범례 위치를 차트 아래쪽으로 지정합니다.


5. 축 설정하기

차트의 축을 지정하고 서식을 지정할 수 있습니다. 아래 코드를 통해 X축과 Y축의 단위, 축 레이블의 표시 여부, 축 라벨의 서식을 지정해봅시다.

With myChart.Chart.Axes(xlCategory)
    .HasTitle = True
    .AxisTitle.Text = "제품"
End With

With myChart.Chart.Axes(xlValue)
    .HasTitle = True
    .AxisTitle.Text = "판매건수"
    .HasMajorGridlines = True
    .HasMinorGridlines = True
End With

위 코드에서 Axes 속성을 사용하여 xlCategoryxlValue를 지정하여 X축과 Y축을 선택합니다. 그리고 HasTitle 속성을 True로 설정하여 축 라벨을 표시합니다. AxisTitle.Text 속성을 사용하여 축 라벨에 제목을 지정합니다. HasMajorGridlinesHasMinorGridlines 속성을 사용하여 major과 minor 그리드 라인을 표시합니다.


6. 차트 서식 지정하기

마지막으로 차트에 서식을 지정합니다. 아래 코드를 사용하여 차트 색상, 글꼴, 그리드 라인과 축 눈금의 색상 및 굵기, 범례 위치 등을 변경할 수 있습니다.

myChart.Chart.ChartStyle = 3
myChart.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 204)
myChart.Chart.ChartArea.Format.Line.Visible = msoTrue
myChart.Chart.Legend.Format.TextFrame2.TextRange.Font.Size = 12
myChart.Chart.Legend.Format.TextFrame2.TextRange.Font.Name = "Tahoma"
myChart.Chart.Axes(xlCategory).TickLabels.Font.Size = 12
myChart.Chart.Axes(xlCategory).TickLabels.Font.Name = "Tahoma"
myChart.Chart.Axes(xlValue).TickLabels.Font.Size = 12
myChart.Chart.Axes(xlValue).TickLabels.Font.Name = "Tahoma"
myChart.Chart.Axes(xlValue).MajorGridlines.Format.Line.ForeColor.RGB = RGB(204, 204, 255)
myChart.Chart.Axes(xlValue).MajorGridlines.Format.Line.Weight = 1
myChart.Chart.Axes(xlValue).MinorGridlines.Format.Line.ForeColor.RGB = RGB(204, 204, 255)
myChart.Chart.Axes(xlValue).MinorGridlines.Format.Line.Weight = 0.5

위 코드에서 ChartStyle 속성을 사용하여 차트의 스타일을 변경합니다. Format.Fill.ForeColor.RGB 속성을 사용하여 차트 영역의 배경색을 변경합니다. ChartArea.Format.Line.Visible 속성을 msoTrue로 설정하여 차트 테두리 라인을 표시합니다. Font.SizeFont.Name 속성을 사용하여 글꼴 크기와 종류를 변경합니다. 축 눈금의 색상과 굵기 등을 변경하기 위해서는 MajorGridlinesMinorGridlines 속성을 이용합니다.


7. 마치며

이제 VBA 코드를 사용하여 엑셀 차트를 생성하고 서식을 지정하는 방법을 배웠습니다. 이를 응용하여 대량의 데이터를 다룰 때 차트 생성에 효율적으로 활용해보세요!

 



포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!

행복한 하루 되세요!