Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 차트 매크로로 만드는 방법

엑셀(Excel)/VBA
반응형

차트 생성이 가능한 매크로를 만들어 두면 여러 모로 편합니다. 만약 차트 포맷이 정해져 있고 반복적으로 차트를 만들어야 된다면 매크로를 이용해서 작업 시간을 줄여 보세요. 초보자는 차트의 세부 설정까지 매크로로 제어하기 힘들겠지만 한 두번씩 만들다 보면 코드를 이해하고 업그레이드할 수 있는 능력이 생길 겁니다.  

 

 

먼저 차트에 적용할 데이터를 만듭니다. 그리고 개발자 도구 탭을 눌러 매크로를 실행해서 자동으로 실행할 함수를 생성합니다.

엑셀 VBA 차트 매크로로 만드는 방법

 

아주 간단하게 차트를 만드는 소스는 아래와 같습니다. Shapes.AddChart() 함수를 이용하시면 바로 차트객체를 생성할 수 있습니다. 생성된 차트에 들어갈 데이터는 ActiveChart.SetSourceData 를 이용합니다. 여기에 차트 데이터를 넣으면 됩니다. 

Sub ChartMake()

   Sheets("차트만들기").Shapes.AddChart.Select
   ActiveChart.SetSourceData Source:=Sheets("차트만들기").Range("A2:F7")
   
End Sub

 

 

매크로를 실행하면 아래 그림과 같이 차트가 자동으로 들어갑니다. 열 항목도 범례에 제대로 들어갔네요. 다음은 추가한 차트를 워크시트 어느 위치에 고정할 지 결정하는  방법을 알아 봅니다

엑셀 VBA 차트 매크로로 만드는 방법

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 Excel 차트 그래프 합치기
엑셀 Excel 워크시트 데이터를 제외한 차트만 출력하기
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기
셀 VBA 매크로 디버깅, 디버그 코드 분석하기

 

 

 

 

원래 AddChart 함수의 원형은 다음과 같습니다. 4가지 파라미터를 가지고 있습니다. 인수로 넘어가는 값으로 차트의 타입, 차트의 왼쪽 상단 꼭지점이 위치할 곳, 차트의 넓이와 높이를 지정할 수 있습니다

엑셀 VBA 차트 매크로로 만드는 방법

 

특정 위치에 차트를 만들어서 고정시키고 싶으면 두 번째, 세 번째 인수의 값을 넘깁니다. 두 값은 워크시트의 왼쪽으로부터 거리와 상단에서 높이 값입니다. 아래 소스를 적용한 결과 화면을 보시면 쉽게 이해가 가실 겁니다.

Sub ChartMake()
   
    Sheets("차트만들기").Shapes.AddChart(xlColumnClustered, 10, 150, 300, 100).Select
    ActiveChart.SetSourceData Source:=Sheets("차트만들기").Range("A2:F7")
   
End Sub

 

엑셀 VBA 차트 매크로로 만드는 방법

 

다음은 차트 종류를 지정하는 방법입니다. AddChart 함수 중 첫 번째 인수는 차트의 종류 입니다. 차트는 그 종류가 많고 상수로 정의했기 때문에 일일이 다 외울 수가 없습니다. 사용할 때 마다 마이크로소프트 MSDN 에서 찾아 봐야 합니다. 링크 주소는 아래와 같습니다. 아래 값에 Member name 의 상수 값에 따라 차트의 종류를 지정할 수 있습니다. 어떤 모양인지는 하나씩 찍어 볼 수 밖에 없습니다.

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlcharttype.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

엑셀 VBA 차트 매크로로 만드는 방법

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 Excel 차트 그래프 합치기
엑셀 Excel 워크시트 데이터를 제외한 차트만 출력하기
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기
셀 VBA 매크로 디버깅, 디버그 코드 분석하기
반응형
Posted by 녹두장군1
,