Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Chart|Charts.Add|ChartObjects.Add

챠트생성하기

챠트를 자동화할때
챠트를 미리 만들어 놓고(Template) 필요할때마다
챠트의 구성요소인 챠트의 하위오브젝트의 속성을 바꿔주는것이
편리하고 실용적이지만
그래도 챠트를 처음부터 만들수는 있어야 겠다
역시 다른 오브젝트를 생성하는것과 마찬가지로
별로 어려운 것이 없다
또한 챠트를 만드는 방법은 여러가지가 있다
가장 간단한 방법으로는

Charts.Add
그런데 이렇게 하면 워크시트에 Chart가 만들어지는것이 아니고
Chart시트가 한장 생성 된다
물론 챠트의 내용은 아무것도 없는 빈탕이다
아래와 같이 하면

With Charts.Add
    .SetSourceData Source:=Range("rChartSource")
End With

챠트시트가 만들어지고 챠트에 표현할 정보의 범위가
전달되어 최소한의 챠트의 모양을 갖추게 된다
챠트의 타입은 기본적으로 설정하지 않으면
막대챠트로 그려진다
아래는 챠트의 타입을 바뀌다면 ChartType속성값을 원하는
챠트타입으로 주면 되는 것이다

With Charts.Add
    .SetSourceData Source:=Range("rChartSource")
    .ChartType = xlLine
End With

위와 같이 Chart시트의 내용을 워크시트로 옮기려면
Location메소드를 움직이면 된다

Dim oChart As Chart
Set oChart = Charts.Add
With oChart
    .SetSourceData Source:=Range("rChartSource"), PlotBy:=xlColumns
    .ChartType = xlArea
    .Location xlLocationAsObject, "STUDIO"
End With

위와 같이 Location메소드를 움직임으로서 챠트시트는 사라지고
챠트가 워크시트속으로 쏙 들어오게 되는것이다
그리고,Chart타입으로 명시된 변수를 선언하고 사용하면
편리한점은 해당오브젝트의 메소드나 속성들을 편하게
볼수 있는 목록이 자동으로 나타난다는 점
변수를 즐겨 사용하여야할 또 다른 중요한 점이니
꼭 지키면 도움이 될것이다
변수를 사용하기를 귀찮아 한다면 프로그래밍을 하지 않는것이 좋다

위와 같이 번거롭게 Chart시트를 만들었다가
다시 워크시트로 옮기지 않고 하는 방법은 없나??
물론 있다
워크시트의 내부에는 Chart오브젝트가 덜렁 혼자 존재하지 않고
ChartObject라는 통속에 쏙 들어가 있는것이다
그래서 시트에서 직접만들고 싶을때는

Dim oChart As Chart
Dim oChartObject As ChartObject
Set oChartObject = Sheet1.ChartObjects.Add(100, 500, 400, 200)
Set oChart = oChartObject.Chart
With oChart
    .SetSourceData Source:=Range("rChartSource"), PlotBy:=xlColumns
    .ChartType = xlArea
End With

와 같이 ChartObjects집합체에 ChartObject오브젝트를 하나 만들면
그 속에 Chart오브젝트가 하나 들어있는것을
Chart오브젝트를 만들필요없이 ChartObject가 갖고 있는 Chart오브젝트를
사용하면 되는것이다
나머지는 위에서 한 Chart오브젝트의 속성과 메소드를
똑같이 활용하면 되는것이다


CreateChart.