VBA嵌套循环变量赋值

时间:2014-02-01 08:37:44

标签: excel vba variables if-statement nested-loops

我需要遍历excel电子表格的行,如果一列中存在特定值,请将同一行中另一列的值复制到电子表格的另一部分。我还需要根据第一列中的值对另一列中的值集合进行求和。

总的来说,我的代码运行良好,除了一小部分。为了避免迭代并复制具有重复值的行,我想在下面的嵌套循环语句中根据我得到的最低行重置“x”(我的行计数器)的值。在这种情况下,我希望“x”迭代到“GoDown”的值,假设“GoDown”大于0.但是,当我这样做时,我的代码会挂起。当我避开最后的“if ... else”语句时,它工作正常,只使用“x = x + 1”。

有谁能告诉我发生了什么,或者如何解决?它挂在第二个范围赋值语句中,这似乎是一个奇怪的地方。非常感谢您的帮助,如果我能澄清任何问题,请告诉我。

Sub NumberCheck()

Dim x As Integer
Dim GoDown As Integer
Dim n As Integer
x = 2
n = 0

Do Until Range("D" & x) = ""

If Range("D" & x) > 50 Then
Range("F" & x).Value = Range("A" & x).Value
Range("G" & x).Value = Range("D" & x).Value
GoDown = x

    Do Until Range("C" & GoDown) = 0 
    n = n + Range("C" & GoDown).Value
    Range("J" & x).Value = Range("B" & GoDown).Value
    GoDown = GoDown + 1
    Loop

Range("H" & x).Value = n
n = 0
End If

If GoDown > 0 Then
x = GoDown
Else
x = x + 1
End If

Loop

End Sub

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题。我不小心创造了一个无限循环!我要离开它,以防它帮助其他人。

我没有意识到,当我将“x”迭代为“GoDown”时,有时“GoDown”将低于“x”,从而创建我的无限循环。为了解决这个问题,我在最后的If ... Else中添加了一个AND语句,以确保“x”总是变大。现在一切正常。我想,这显示了我是个新秀。

If GoDown > 0 And x < GoDown Then
x = GoDown
Else
x = x + 1
End If
相关问题