Excel VBA: การให้ค่าอาร์เรย์เป็นขีดจำกัด 'for loop'

ฉันพบ 'ข้อผิดพลาดในการคอมไพล์: ข้อผิดพลาดทางไวยากรณ์' เมื่อฉันเรียกใช้รหัสต่อไปนี้:

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 loop แต่มันทำให้เกิดข้อผิดพลาดทางไวยากรณ์

For L = 0 To j

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

Next L

person user3790349    schedule 30.06.2014    source แหล่งที่มา


คำตอบ (4)


แก้ไขโค้ดดังนี้:

For L = 0 To j

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

Next L
person Tarik    schedule 30.06.2014

ใช้สำหรับ L = 1 ถึง J-1....

เนื่องจาก c_bound_h(L+1) มิฉะนั้นจะอยู่นอกขอบเขต

person Dan Savage    schedule 30.06.2014

คุณกำลังประกาศ 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
person Community    schedule 30.06.2014

จำเป็นต้องป้องกันการวนซ้ำที่ไม่จำเป็นโดยการเปรียบเทียบ 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
person CoveGeek    schedule 30.06.2014