Цикл До, чтобы получить значение ячейки больше определенного числа - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу, чтобы код считывал значение 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

1 Ответ

0 голосов
/ 08 февраля 2019

Цикл do until повторяет свои инструкции до тех пор, пока проверяемое условие не станет true.В вашем случае у вас есть условие, которое никогда не изменится:

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

Вы будете входить в цикл до тех пор, пока vResults(1, i) не станет больше 21, но, поскольку значение никогда не меняется, цикл никогда не закончится(АКА: бесконечный цикл).В конечном итоге Windows скажет, что excel не отвечает, и спросит вас, хотите ли вы завершить процесс, чтобы выйти из цикла, что может выглядеть как сбой приложения.

Либо измените значение vResults(1, i)или измените условие, чтобы проверить что-то еще, что изменится в цикле (вероятно, vInputs(5, i)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...