[英]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.