3

我正在通过 vba 代码在 excel 中创建一个图表。我正在使用连续数据并且图表弹出没有问题,但是有一个名为“Series 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

但这不起作用。

在此先感谢,马克斯

4

3 回答 3

6

SeriesCollection是对象的一部分ChartObject.Chart,而不是ChartObject.

因此,替换您的行:

MyChtObj.SeriesCollection(3).Delete

和:

MyChtObj.Chart.SeriesCollection(3).Delete
于 2017-01-04T15:05:50.283 回答
0

你的代码行

.SeriesCollection.NewSeries.XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))

正在通过添加第三个系列.NewSeries。将其更改为

.SeriesCollection(1).XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))

现在没有什么可删除的了。

于 2017-01-11T02:13:08.923 回答
0

这似乎并不总是有效

.SeriesCollection(1).XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight))

如果没有要删除的系列 3,这将不起作用(有时这个系列 3 默认不会随机出现,那么您将收到此行的错误)

MyChtObj.Chart.SeriesCollection(3).Delete

这是一个快速而肮脏的把戏。添加这个(在这里重复 3 次,但根据您的工作表重复更多,因为不同的工作表取决于填充的单元格的 nr,生成不同数量的随机序列)。每次删除时,它将继续删除落入“列表”中第 3 位的系列,直到 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
于 2019-03-19T20:37:24.040 回答