数组中每个元素的Excel宏循环

时间:2014-01-29 18:19:36

标签: arrays excel vba for-loop

我有相对大量的数据,我想把它放在图表中。

基本上,我所拥有的是多个组件(总共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的体验有限,所以你们中的任何人都知道如何解决这个问题吗? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

Array()创建一个下限为零的单维数组(除非您在模块顶部使用Option Base 1)。

所以你应该从0循环到ubound(componentlist)-1,你只需要使用componentlist(i),因为你的数组只有一个维度。

答案 1 :(得分:0)

您应该调查的第一件事是LBOUND(组件列表)是1还是0,并在必要时修复 for 循环。

接下来要解决的是组件列表的维度。它应该是单一的。