首页 > 解决方案 > 在 VBA 中更新预制图表

问题描述

我在名为“摘要”的选项卡中有一些预制图表,我希望它从名为“数据”的选项卡中提取数据。通过预制,我只是插入了带有标题和轴的散点图,我只想更新 X 和 Y 值。“数据”选项卡有一堆链接到另一个工作簿的单元格。我也尝试过从头开始制作图表,这是我以前做过的,但是当我将它转移到这个项目时,该文件中的代码不起作用。

开始日期和结束日期的索引工作正常,在我尝试实际更新 X 和 Y 值之前一切正常。我收到“错误 1004 应用程序定义或对象定义错误”

这是我用来更新预制图表的代码:

Option Explicit

Public Sub UpdateCharts()

Dim i As Integer, j As Integer, flag As Integer, k As Integer, n   As        Integer, w As Integer

Dim enddate As Date
Dim startdate As Date

enddate = Worksheets("Summary").range("A2")
startdate = Worksheets("Summary").range("A3")

i = 1
j = 1
k = 1
n = 1

'Index the column that has the enddate

Do
    If Worksheets("Data").Cells(2, j + 2) = enddate Then
        i = j + 2
        flag = 1
    End If
    j = j + 1
Loop While flag = 0

flag = 0

'Index the column that has the startdate
Do
    If Worksheets("Data").Cells(2, n + 2) = startdate Then
        k = n + 2
        flag = 1
    End If
    n = n + 1
Loop While flag = 0

For w = 1 To Worksheets("summary").ChartObjects.Count
    Worksheets("summary").ChartObjects(w).Name = w
Next w

'Error happens here
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k)).Value
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k)).Value

End Sub


`

标签: excelvbacharts

解决方案


改变

'Error happens here
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k)).Value
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k)).Value

'No more error
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k))
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k))

.XValues并且.Values可以接受我更改的代码提供的范围或一维数组。您的代码,带有.Value,提供二维数组,它阻塞.XValues.Values.


推荐阅读