我有相对大量的数据,我想把它放在图表中。
基本上,我所拥有的是多个组件(总共30个,但在下面的示例中,我将代码限制为5个组件),每个组件都有一个列。 我已将列号分配给相应的组件,声明为整数。 有时我不希望某个组件有一个图形,以便在数字中存在间隙(例如,在diat和hydr之间是第5列中的另一个组件,但是对于这个组件,不应该有图表)。
然后我想把我想要图形的所有组件放到一个数组中并执行For ... Next循环,这样就可以为数组中的每个元素自动创建一个图形(因此对于数组中的每个组件都是如此) )。
显然我做错了什么:-)。第一次尝试引用数组中受尊重的元素时,代码卡住了:ActiveChart.SeriesCollection(1).Name = Cells(9, componentlist(1,i))
Dim diat, hydr, para, terb, theo As Integer
diat = 4 'column number of the component named diat
hydr = 6 'column number of the component named hydr
para = 7 'column number of the component named para
terb = 9 'column number of the component named terb
theo = 10 'column number of the component named theo
Dim componentlist As Variant
componentlist = Array(diat, hydr, para, terb, theo)
For i = 1 To UBound(componentlist)
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SeriesCollection.NewSeries.Select
ActiveChart.SeriesCollection(1).Name = Cells(9, componentlist(1, i))
ActiveChart.SeriesCollection(1).XValues = Worksheets(2).Range(Cells(10, 3), Cells(21, 3))
ActiveChart.SeriesCollection(1).Values = Worksheets(2).Range(Cells(10, componentlist(1, i)), Cells(21, componentlist(1, i)))
Next
我对VBA的体验有限,所以你们中的任何人都知道如何解决这个问题吗? 提前谢谢!
答案 0 :(得分:0)
Array()
创建一个下限为零的单维数组(除非您在模块顶部使用Option Base 1
)。
所以你应该从0循环到ubound(componentlist)-1
,你只需要使用componentlist(i)
,因为你的数组只有一个维度。
答案 1 :(得分:0)
您应该调查的第一件事是LBOUND(组件列表)是1还是0,并在必要时修复 for 循环。
接下来要解决的是组件列表的维度。它应该是单一的。