【问题标题】:VBA loop updating series in chart using data from another sheetVBA循环使用另一张表中的数据更新图表中的系列
【发布时间】: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) 范围。您之前建议的地址

标签: vba excel loops excel-charts


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多