我想将数据添加到一堆现有图表中。假设每个图表具有不同数量的数据系列,并且原始数据的位置在同一工作簿中。这是我的开始:
For iChart = 1 To iCount
ActiveSheet.ChartObjects("Chart " & iChart).Activate
intSeries = 1
Do Until ActiveChart.SeriesCollection(intSeries).Name = ""
Set rXVal = ActiveChart.SeriesCollection(intSeries).XValues '<- Object Required error
Set rXVal = Range(rXVal, rXVal.End(xlDown))
Set rYVal = ActiveChart.SeriesCollection(intSeries).Values
Set rYVal = Range(rYVal, rYVal.End(xlDown))
ActiveChart.SeriesCollection(intSeries).XValues = rXVal
ActiveChart.SeriesCollection(intSeries).Values = rYVal
intSeries = intSeries + 1
Loop
Next iChart
我知道这ActiveChart...XValues = rXVal
可行,但是我在Set rXVal = ActiveChart....XValues
网上遇到“ Object Required”错误。我假设既然有一个范围可以定义数据序列,那么我可以再次将该范围取回来,然后添加到其中。
更新
为了使情况更清楚一点,我在8个地方安装了加速度计,并安装了FFT软件来记录4个单独频带中的峰值振动响应。每个样本产生32个数据点。导出时,软件会吐出4张Excel工作簿。每个频段一个。每张表上都有加速度计名称,而样品编号在下方。
我已成功使用以下语法:
Dim rXVal() As Variant
rXVal = ActiveChart.SeriesCollection(intSeries).XValues
更新
在这种情况下,您得到一个数组,因为给定的语句(ActiveChart.SeriesCollection(intSeries).XValues
)是一个数组而不是范围。如果您探究以下内容的Series对象,这就是您在Locals窗口中看到的内容ActiveChart.SeriesCollection(intSeries)
:
(在我的虚拟数据中,我有名为r1,r2,r3,r4的行。)
我想说的是,XValues
没有任何属性可以表明其占用的范围。
如果您确实需要一个范围,我建议您从formula
属性中获取它。我建议的方式是用这一行替换引起错误的行:
Set rXVal = Range(Split(ActiveChart.SeriesCollection(intSeries).Formula, ",")(1))
接下来,我看到您正在尝试获取的范围Values
。同样,使用以下命令:
Set rYVal = Range(Split(ActiveChart.SeriesCollection(intSeries).Formula, ",")(2))
另一件事。
以下几行最终会导致您出错:
intSeries = 1
Do Until ActiveChart.SeriesCollection(intSeries).Name = ""
...some code...
intSeries = intSeries + 1
Loop
使用以下方法更改它们:
For intSeries = 1 To ActiveChart.SeriesCollection.Count
...some code...
Next
还有一件事。
重复使用时,请考虑使用With
and 。然后,您的代码将更具可读性,因为您只需跳过这一行!那不是很棒吗???End With
ActiveChart.SeriesCollection(intSeries)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句