For 循环超过 ubound 设置限制

问题描述 投票:0回答:1
For from_idx = 1 To UBound(arr_1, 1)
    For to_idx = 1 To UBound(arr_2, 1)
        If arr_1(from_idx, 1) = arr_2(to_idx, 3)Then
            Exit For
        End If
    Next
Next

问题: 其中 Ubound(arr_1,1) = 2044 当我运行代码时,我得到一个超过限制的 for 循环,并将 from_idx 设置为 2045,因为它不应该进入该 for 循环

vba
1个回答
0
投票

以下是一些可能导致您遇到此问题的原因: 数组arr_1在循环执行期间被修改:如果arr_1在循环执行期间被修改,UBound(arr_1, 1)的值可能会改变。确保在循环开始之前计算 UBound 的值并将其存储在变量中,然后在循环中使用该变量。代码的其他部分导致了问题: 代码的其他部分可能是导致这个问题。例如,可能有一个条件分支(例如 If 语句)可以在某些情况下更改循环的行为。 调试:使用VBA调试工具逐步执行代码,检查循环过程中from_idx和UBound(arr_1, 1)值的变化。 外部因素:有时,外部因素(例如其他宏或应用程序)可能会影响VBA代码的执行。确保没有其他代码或应用程序在运行时修改 arr_1。

© www.soinside.com 2019 - 2024. All rights reserved.