VBA循环使用其他工作表中的数据更新图表中的系列

VBA循环使用其他工作表中的数据更新图表中的系列,vba,excel,loops,excel-charts,Vba,Excel,Loops,Excel Charts,在工作表(“成本”)中,下面的代码中注释了一个错误。一旦错误被解决,我计划在每个图表中放置一个“c(x)”计数器来循环 运行时错误“1004”: 对象“\u工作表”的方法“范围”失败 我认为错误与我如何引用另一张表有关 Dim p As Worksheet, cost As Worksheet Set cost = Workbooks("dashboard.xlsm").Worksheets("Cost") Set p = Workbooks("dashboard.xlsm").Workshee

在工作表(“成本”)中,下面的代码中注释了一个错误。一旦错误被解决,我计划在每个图表中放置一个“c(x)”计数器来循环

运行时错误“1004”: 对象“\u工作表”的方法“范围”失败

我认为错误与我如何引用另一张表有关

Dim p As Worksheet, cost As Worksheet
Set cost = Workbooks("dashboard.xlsm").Worksheets("Cost")
Set p = Workbooks("dashboard.xlsm").Worksheets("p")

Dim c(1 To 3) As Variant

p.Activate
'[c(x)] denotes ranges for each chart object
'modified by counter [i], denoting ranges for each series
Set c(1) = p.Range(Cells(3, 1 + i), Cells(3, 1 + i).End(xlDown))
Set c(2) = p.Range(Cells(3, 4 + i), Cells(3, 4 + i).End(xlDown))
Set c(3) = p.Range(Cells(3, 8 + i), Cells(3, 8 + i).End(xlDown))

cost.Activate
For i = 1 To 2
    With ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(i)
    'all charts follow same time series
    .XValues = p.Range(Range("a3"), Range("a3").End(xlDown)) '**error here**
    .Values = c(1)
    End With
Next i

尝试替换您的线路:

.XValues = p.Range(Range("a3"), Range("a3").End(xlDown))
与:


尝试
.XValues=p.Range(p.Range(“a3”)、p.Range(“a3”).End(xlDown))
这样所有范围都可以用一张表来限定。这太完美了;成功了。但是,现在我遇到了一个问题,系列I=1的循环上的c(1)被删除,并被系列I=2的循环上的c(1)覆盖。有什么建议吗?在循环的每次迭代中,您的XValues或值都不会改变-是这样吗?请注意,问题是XValues正在读取,因为XValues和两个系列的值都是常量XValues,根据系列集合的不同,值应该以i=1或i=2传递到c(1),它们将引用单独的列。我还以p认证了c(1)范围。如你先前所建议的地址
.XValues = "=" & p.Range(p.Range("a3"), p.Range("a3").End(xlDown)).Address(False, False, xlA1, xlExternal)