excel - 执行直到循环以获取大于某个数字的单元格的值

标签 excel vba loops

我希望代码读取 'vResults(1, i)' 的值,如果它大于 21,我希望它将 'vInputs(5, i)' 的值增加 1 并继续这样做直到 'vResults (1, i)' 大于 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) )。

关于excel - 执行直到循环以获取大于某个数字的单元格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594833/

相关文章:

vba - excel vba项目未关闭

python - 使用 xlwings 操作用户表单

vba - 使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目

vba - 在自定义数字格式 VBA 中使用变量

excel - 将偏移行添加到给定范围。 Excel VBA

javascript - 如何让计算机猜测一个数字并返回猜测的数字(Javascript)?

c - 为什么我的C程序即使满足退出条件也不跳出while循环

c++循环永远运行而无需等待输入

excel - PDF每个命名范围到单个页面 - VBA

python - 如何使 '?' 等于一个数字,所以当我浏览列表时。它将把它算作零。 (Python)