我正在通过vba代码在excel中创建一个图表。我使用连续数据并且图表弹出没有问题,但是有一个名为“系列3”的额外系列,我没有要求并且需要摆脱(通过删除它或省略首先)。它没有数据,但至少需要从图例中删除。这是我的代码:
Dim MyChtObj As ChartObject
Dim Sht1 As Worksheet
Dim ShtName As String
Set Sht1 = Worksheets("Parameter Forecasts")
ShtName = Sht1.Name
Set MyChtObj = Sht1.ChartObjects.Add(100, 100, 500, 500)
Set a = Sht1.Range("E37", Sht1.Range("E37").End(xlToRight))
Set b = Sht1.Range("E38", Sht1.Range("E38").End(xlToRight))
Set InputData = Union(a, b)
With MyChtObj.Chart
.ChartType = xlLineMarkers
.SetSourceData InputData
.PlotBy = xlRows
.SeriesCollection.NewSeries.XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))
End With
我已经尝试过了:
MyChtObj.SeriesCollection(3).Delete
但这不起作用。
提前致谢,Max
答案 0 :(得分:5)
SeriesCollection
是ChartObject.Chart
对象的一部分,而不是ChartObject
。
因此,请更换以下行:
MyChtObj.SeriesCollection(3).Delete
使用:
MyChtObj.Chart.SeriesCollection(3).Delete
答案 1 :(得分:0)
您的代码行
.SeriesCollection.NewSeries.XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))
通过.NewSeries
添加第三个系列。将其更改为
.SeriesCollection(1).XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))
现在没有什么可以删除的。
答案 2 :(得分:0)
这似乎并不总是有效
.SeriesCollection(1).XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))
如果没有要删除的系列3(有时默认情况下不会随机出现该系列3,则此行会出现错误),这将无效
MyChtObj.Chart.SeriesCollection(3).Delete
这是一个快速的n技巧。添加此内容(此处重复3次,但根据您的工作表重复更多,因为不同的工作表取决于填充的单元格的nr,会生成不同数量的随机序列)。每次删除时,它将不断删除落入“列表”中第三位的序列,直到nr或序列为2
If .SeriesCollection.Count > 2 Then
MyChtObj.Chart.SeriesCollection(3).Delete
End If
If .SeriesCollection.Count > 2 Then
MyChtObj.Chart.SeriesCollection(3).Delete
End If
If .SeriesCollection.Count > 2 Then
MyChtObj.Chart.SeriesCollection(3).Delete
End If