gpt4 book ai didi

arrays - 退出嵌套 For 循环 VBA 并重新循环

转载 作者:行者123 更新时间:2023-12-04 21:36:53 25 4
gpt4 key购买 nike

我正在尝试使用嵌套的 For 循环。我基本上有2个数组,我想使用array1中的第一个变量和array2中的第一个变量来做一些操作,依此类推,直到数组用完。不幸的是,Exit For 不会退出 For 级别。因此,我尝试使用 goTo 命令,但是由于我正在尝试重新访问该数组,因此我清楚地收到“此数组已修复或暂时锁定”的错误。我被困在如何在 VBA 中解决这个问题。下面是我的代码,在 MsgBox 中将进行一些操作(需要对 (dAFL,AFL),(dSF,SF) 等):

For Each vN In Array(dAFLcell, dSFcell, dSOcell, dFIGcell, dIBAcell, dIBXcell)
a = 0
For Each vN2 In Array(AFLcell, SFcell, SOcell, FIGcell, IBAcell, IBXcell)


If i = a Then
MsgBox a
GoTo end_of_for
End If
a = a + 1
Next vN2
end_of_for:
i = i + 1
Next vN

最佳答案

您可以使用 bool 标志 - 我不知道这是公认的方法,但我不时使用它。

Dim skipBool as Boolean = False    

For Each vN In Array(dAFLcell, dSFcell, dSOcell, dFIGcell, dIBAcell, dIBXcell)
a = 0 'I think you want this out here, otherwise a will always equal 0
For Each vN2 In Array(AFLcell, SFcell, SOcell, FIGcell, IBAcell, IBXcell)
If Not skipBool Then 'run this stuff only if we don't want to skip it (duh!)

If i = a Then
MsgBox a
skipBool = True 'set skipBool to be True (we want to skip it!)
End If
a = a + 1
End If
Next vN2
i = i + 1
skipBool = False 'reset skipBool for the next go around
Next vN

我确信这段代码可以进一步优化(老实说,我还没有测试过),但看起来这就是你想要的。

老实说,唯一的问题可能是 a = 0在第二个 for 循环内,这就是为什么你没有得到你预期的结果。我使用 VBA 已经有一段时间了(我只使用过 VB.NET),所以我不记得那里的确切语法。我会尝试解决这个问题,然后返回方法的导出。如果它仍然不起作用,我的代码应该。

关于arrays - 退出嵌套 For 循环 VBA 并重新循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com