簡體   English   中英

Excel VBA:將數組值作為“ for循環”限制

[英]Excel VBA: Giving array values as 'for loop' limits

運行以下代碼時,我遇到“編譯錯誤:語法錯誤”:

c_bound_h()是一個索引從0到j的數組。 假設j的值為3(對於本示例),其值如下所示。 表格行中的數據根據​​這些限制進行排序。 例如,從第2行到第1507行='值1',從第1508行到第3013行='值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

修改代碼如下:

For L = 0 To j

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

Next L

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

因為否則c_bound_h(L + 1)會超出范圍

您是否將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

需要通過一次比較兩個值來防止不必要的循環,但不要超過數組限制。 這基於“ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM