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
속성을 사용하여 xlCategory
와 xlValue
를 지정하여 X축과 Y축을 선택합니다. 그리고 HasTitle
속성을 True
로 설정하여 축 라벨을 표시합니다. AxisTitle.Text
속성을 사용하여 축 라벨에 제목을 지정합니다. HasMajorGridlines
과 HasMinorGridlines
속성을 사용하여 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.Size
와 Font.Name
속성을 사용하여 글꼴 크기와 종류를 변경합니다. 축 눈금의 색상과 굵기 등을 변경하기 위해서는 MajorGridlines
와 MinorGridlines
속성을 이용합니다.
7. 마치며
이제 VBA 코드를 사용하여 엑셀 차트를 생성하고 서식을 지정하는 방법을 배웠습니다. 이를 응용하여 대량의 데이터를 다룰 때 차트 생성에 효율적으로 활용해보세요!
포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!
행복한 하루 되세요!
'■ 칼퇴를 위한 VBA : 사례 > - VBA for 엑셀' 카테고리의 다른 글
VBA를 활용한 엑셀 데이터 정렬 방법 (0) | 2023.06.26 |
---|---|
엑셀 VBA로 작업 일정 관리 자동화하기 (0) | 2023.06.26 |
엑셀 VBA를 이용한 조건부 서식 복사 방법 (0) | 2023.06.26 |
VBA 스크립트를 활용한 엑셀 데이터 유효성 검증 해제 방법 (0) | 2023.06.25 |
엑셀 VBA를 사용하여 셀 주석 추가 및 제거하는 방법 (0) | 2023.06.25 |