2013-06-28 3 views
1

다음 코드는 거품 원형 차트 (원형 차트가 거품 모양 인 불투명 차트)를 만들기위한 것입니다. 파이 차트를 반복적으로 버블 차트에 복사합니다. 내 문제는이 방법으로 최종 파이 차트는 약간 둥근 모양으로 보입니다. 내가 의심하는 문제는 일종의 형식과 관련이 있습니다. VBA 복사 모양 기능

Sub PieMarkers() 

Dim chtMarker As Chart 
Dim chtMain As Chart 
Dim intPoint As Integer 
Dim rngRow As Range 
Dim lngPointIndex As Long 
Dim thmColor As Long 
Dim myTheme As String 


Application.ScreenUpdating = False 
Set chtMarker = ActiveSheet.ChartObjects("chtMarker").Chart 
Set chtMain = ActiveSheet.ChartObjects("chtMain").Chart 

Set chtMain = ActiveSheet.ChartObjects("chtMain").Chart 
Set rngRow = Range(ThisWorkbook.Names("PieChartValues").RefersTo) 

For Each rngRow In Range("PieChartValues").Rows 
    chtMarker.SeriesCollection(1).Values = rngRow 
    ThisWorkbook.Theme.ThemeColorScheme.Load GetColorScheme(thmColor) 
    chtMarker.Parent.CopyPicture xlScreen, xlPicture 
    lngPointIndex = lngPointIndex + 1 
    chtMain.SeriesCollection(1).Points(lngPointIndex).Paste 
    thmColor = thmColor + 1 
Next 

lngPointIndex = 0 

Application.ScreenUpdating = True 
End Sub 

Function GetColorScheme(i As Long) As String 
Const thmColor1 As String = "C:\Program Files\Microsoft Office\Document Themes 15\Theme Colors\Blue Green.xml" 
Const thmColor2 As String = "C:\Program Files\Microsoft Office\Document Themes 15\Theme Colors\Orange Red.xml" 
    Select Case i Mod 2 
     Case 0 
      GetColorScheme = thmColor1 
     Case 1 
      GetColorScheme = thmColor2 
    End Select 
End Function 

은 내가 spcific 더블 클릭이 형식의 데이터 포인트를 선택한 후 작성 스트레치 옵션 (사진 채우기를 선택한 경우에만 가능)로 이동 ubble 경우 문제가 풀 수 있음을 발견했다. 문제는 내 데이터가 변하고 있으며 위에서 언급 한 코드에이를 구현하는 동적 인 방법이 필요하다는 것입니다.이 방법이 있나요?

은 내가 당신의 원형 차트가 완벽하게 사각형 모양이 아닌 경우이 문제가 될 것 같아 여기에이 콘솔 http://s1.directupload.net/file/d/3300/7dlimc3g_png.htm

+0

안녕 티몬 : 당신이 전에 CopyPicture을이 작업을 수행하려면이 같은, 그 Width과의 Height 동일하게 설정합니다. 나는 사무실에 도착했을 때 몇 가지 것을 시도 할 것이다. –

+0

자신의 글을 파손하지 마십시오. 감사! – Undo

답변

1

를 참조하십시오. 문제를 재현 할 수 있으며 채우기 옵션을 선택해도 오프셋은 모두 0%입니다. 나는 그것들을 조정할 수 있지만 그것을 할 수있는 믿을만한 방법은 아니다. 그래서, 가장 좋은 방법은 파이 차트 .Parent이 사각형 모양인지 확인하는 것입니다. 내가이 작업을 수행 할 수있을 것이라고 생각 -

chtMarker.Parent.Height = chtMarker.Parent.Width '## Ensure the chartObject is a square, so it will not be distorted when pasted. 
chtMarker.Parent.CopyPicture xlScreen, xlPicture 
+0

'Point' 색상을 변경하는 방법에 대한 질문은 StackOverflow에서 대답했습니다. [여기에는 한 가지 방법이 있습니다.] (http://stackoverflow.com/questions/11136194/change-the-point-color-in-chart-excel -vba)와 [다른 유사한 방법이 있습니다] (http://stackoverflow.com/questions/8495987/changing-color-of-bars-in-a-bar-chart). 물론 8 x 3 = 24 포인트마다 별도의 색상 할당을해야합니다. –

+0

아마 다른 기능을 쓸 것입니다. 'Points'는'Collection' 객체 일 뿐이므로'Worksheets'를 반복하는 것처럼 (Collection' 객체이기도합니다.) 각 차트의 점들을 반복하고 색상을 적용해야합니다 포인트 인덱스와 차트 인덱스 값을 기준으로 –

+0

네가 새로운 질문이되어야한다. "시리즈의 포인트를 반복하고 다른 색상을 적용하려면 어떻게해야합니까?"최소한 * 시작해야합니다. –