【发布时间】:2013-07-01 05:28:48
【问题描述】:
我的代码是
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 14\Theme Colors\Blue Green.xml"
Const thmColor2 As String = "C:\Program Files\Microsoft Office\Document Themes 14\Theme Colors\Orange Red.xml"
Select Case i
Case 0
GetColorScheme = thmColor1
Case 1
GetColorScheme = thmColor2
End Select
End Function
该代码旨在更改连续饼图的颜色主题,这些饼图在气泡图中用作气泡。所以这个函数只是为了选择一个我之前保存为字符串的配色方案,然后根据脚本的运行来改变它,这样第一个饼图就比下一个饼图有另一种颜色......我确实得到了在该行调试代码时出现错误提示
ThisWorkbook.Theme.ThemeColorScheme.Load GetColorScheme(thmColor)
错误消息是运行时错误 2147024809,表示指示的值超出范围。有人可以帮我解决这里的问题吗?
还有没有什么方法可以整合饼图组件的显示(每个饼图的列头指示的组件名称,然后转移到气泡图?
【问题讨论】:
-
您可以在复制为图片之前更改颜色主题。或者,您可以走更复杂/特定的路线,并为
SeriesCollection(1)中的每个点应用一些预设/用户定义的颜色。但除非您对特定颜色有特殊需求,否则在复制/粘贴之前简单地更改主题应该会给您一些变化。 -
您不必构建不同的图表,只需将
Theme.ThemeColorScheme应用于活动工作簿,这将更改图表系列的外观/颜色。请参阅下面的答案。