VBA循环使用另一张表中的数据更新图表中的系列
Posted
技术标签:
【中文标题】VBA循环使用另一张表中的数据更新图表中的系列【英文标题】:VBA loop updating series in chart using data from another sheet 【发布时间】:2017-12-17 03:02:57 【问题描述】:在 sheet("Cost") 中,下面的代码中注释了一个错误。错误解决后,我计划在每个图表中放置一个“c(x)”计数器
运行时错误“1004”: 对象“_Worksheet”的方法“范围”失败
我认为错误与我引用另一张表的方式有关
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(p.Range("a3"), p.Range("a3").End(xlDown))
以便所有范围都使用工作表进行限定。
太完美了;有效。但是,现在我遇到的问题是,系列 i=1 的循环上的 c(1) 被系列 i=2 的循环上的 c(1) 删除并覆盖。有什么建议吗?
您的 XValues 或 Values 在循环的每次迭代中都不会改变 - 对吗?
从头开始,问题是 Xvalues 被读取为两个系列的 XValues 和 Values
XValues 是常量,值应根据系列集合传入 i=1 或 i=2 到 c(1),它们将引用单独的列。我还用 p 限定了 c(1) 范围。您之前建议的地址
【参考方案1】:
尝试更换您的线路:
.XValues = p.Range(Range("a3"), Range("a3").End(xlDown))
与:
.XValues = "=" & p.Range(p.Range("a3"), p.Range("a3").End(xlDown)).Address(False, False, xlA1, xlExternal)
【讨论】:
以上是关于VBA循环使用另一张表中的数据更新图表中的系列的主要内容,如果未能解决你的问题,请参考以下文章
循环遍历一张表中的列值并将另一列中的 COUNTIF 值粘贴到另一张表中