Do Until循环可获取大于某个数字的单元格值



我希望代码读取'vResults(1,I)'的值,如果它大于21,我希望它将'vInputs(5,I)’的值增加1,并一直这样做,直到'vResults'大于21。

没有给出任何错误,但Excel只是崩溃了。

Sub CreateTestResultTableV2()
Application.ScreenUpdating = False 'helps the code run faster
Dim vInputs, vResults()
Dim c As Integer, i As Integer
'create INPUTS 
c = Range("b5").End(xlToRight).Column
vInputs = Range("b5", Cells(9, c))
'determine last value in the column
c = UBound(vInputs, 2)
'create RESULTS 
ReDim vResults(1 To 3, 1 To c)
For i = 1 To c
If vInputs(1, i) > 22 Then
'set values
Range("j16") = vInputs(1, i)
Range("n12") = vInputs(3, i)
Range("r14") = vInputs(5, i)
'copy output values into RESULTS 
vResults(1, i) = Range("h41")
vResults(2, i) = Range("k41")
vResults(3, i) = Range("z14")
Do Until vResults(1, i) > 21
vInputs(5, i).Value = vInputs(5, i).Value + 1
Loop
End If
Next i
Range("c47").Resize(3, c) = vResults
Application.ScreenUpdating = True
End Sub

do until循环重复其指令,直到测试条件变为true。在你的情况下,你的条件永远不会改变:

Do Until vResults(1, i) > 21
vInputs(5, i).Value = vInputs(5, i).Value + 1
Loop

您将进入循环,直到vResults(1, i)大于21,但由于该值从未更改,循环永远不会结束(AKA:无限循环)。Windows最终会说excel没有响应,并会问你是否想结束这个过程以退出循环,这可能看起来像是应用程序崩溃了。

要么更改vResults(1, i)的值,要么更改条件以检查循环中将要更改的其他内容(可能是vInputs(5, i))。

最新更新