VBA修改ChartObject图表图例系列名称问题求助
解决Excel VBA图表系列名称显示为Series 1/2的问题
要将图表的系列名称改为Realization和Target,你需要直接修改图表系列的Name属性——.SeriesNameLevel仅适用于绑定动态数组或数据透视表的图表,普通单元格区域数据源不支持该属性,这也是你报错的原因。
修改后的完整代码
Sub DeleteKPICharts() On Error Resume Next Worksheets("Current DMB Template").ChartObjects.Delete End Sub Sub KPIcharts() Dim wb As Workbook Dim main As Worksheet Dim KPI As Worksheet Dim embeddedchart As ChartObject Set wb = ThisWorkbook Set main = wb.Sheets("Current DMB Template") Set KPI = wb.Sheets("KPI") Dim TotalGraphsD As Byte Dim TotalGraphsG As Byte Dim i As Long, j As Long Dim ThisColumn As String For i = 2 To 11 Step 3 '循环遍历行:2,5,8 ThisColumn = IIf(KPI.Range("E" & i).Value = "No", "G", "D") '确定图表放置的列 j = 9 + (7 * IIf(ThisColumn = "G", TotalGraphsG, TotalGraphsD)) '确定图表放置的行,每7行一个间隔 Set embeddedchart = main.ChartObjects.Add(Left:=Range(ThisColumn & j).Left, Width:=170, Top:=Range(ThisColumn & j).Top, Height:=100) embeddedchart.Chart.SetSourceData Source:=KPI.Range("A" & i & ":C" & i) ' 手动设置系列名称 With embeddedchart.Chart .SeriesCollection(1).Name = "Realization" .SeriesCollection(2).Name = "Target" End With If ThisColumn = "G" Then TotalGraphsG = TotalGraphsG + 1 Else TotalGraphsD = TotalGraphsD + 1 Next i End Sub
关键修改说明
在设置图表数据源之后,添加的With块直接修改了两个系列的名称:
.SeriesCollection(1)对应数据源中的第二列(B列),命名为Realization.SeriesCollection(2)对应数据源中的第三列(C列),命名为Target
这种方法适用于基于普通单元格区域创建的图表,能直接覆盖默认的Series 1/Series 2命名。
内容的提问来源于stack exchange,提问作者Kris_Toor
相关产品推荐
相关产品推荐

