Excel VBA:将数组值设置为“for loop”限制

时间:2014-06-30 13:15:05

标签: arrays excel vba for-loop syntax-error

当我运行以下代码时,我正面临'编译错误:语法错误':

c_bound_h()是一个索引从0到j的数组。让我们假设j的值是3(对于这个例子),其中的值在下面给出。工作表行中的数据根据​​这些限制进行排序。例如,从row2到row1507 ='Value 1',第1508行直到row3013 ='Value 2',依此类推。

我希望通过在For循环中传递这些限制来遍历每个数据类。但是,它给出了语法错误。

j = 3

c_bound_h(0) = 2
c_bound_h(1) = 1508
c_bound_h(2) = 3014
c_bound_h(3) = 4519

'我希望通过在For循环中传递这些限制来遍历每个数据类。但是,它给出了语法错误。

For L = 0 To j

    For c_bound_h(L) To c_bound_h(L+1)-1

Next L

4 个答案:

答案 0 :(得分:0)

修改代码如下:

For L = 0 To j

    For K= c_bound_h(L) To c_bound_h(L+1)-1
    Next K

Next L

答案 1 :(得分:0)

使用L = 1至J-1 ....

因为否则c_bound_h(L + 1)将超出范围

答案 2 :(得分:0)

您是否将c_bound_h声明为整数?

我将此代码放入工作簿中,它对我来说非常好: -

Sub test()

j = 3

Dim c_bound_h(4) As Integer

c_bound_h(0) = 2
c_bound_h(1) = 1508
c_bound_h(2) = 3014
c_bound_h(3) = 4519


For L = 0 To j

    For k = c_bound_h(L) To c_bound_h(L + 1) - 1
        MsgBox ("pass")
    Next k

Next L



End Sub

答案 3 :(得分:0)

需要通过一次比较2个值来防止不必要的循环,但不要超过数组限制。这基于'Don Relentless'代码,但略有修改。

Sub test()

j = 3

Dim c_bound_h(0 to 3) As Integer

c_bound_h(0) = 2
c_bound_h(1) = 1508
c_bound_h(2) = 3014
c_bound_h(3) = 4519

For L = 1 To j

    For k = c_bound_h(L-1) To c_bound_h(L) - 1
        debug.print "pass row " & k
    Next k

Next L

End Sub