Выход из цикла VBA с несколькими переменными
Как новичок в VBA (Excel), я пытаюсь создать инструмент, который определяет, каким должен быть диагностический результат определенного теста; чтобы быть экономически эффективным в качестве предварительного скрининга к другому диагностическому тесту.
Я хочу рассчитать определенную доходность теста А, при которой доходность теста Б затраты на диагностику одинаковы для обоих тестов. Код, который я написал, должен зацикливаться на определенном диапазоне для диагностического выхода и выходить из этого цикла, когда затраты на диагностику для теста A падают ниже затрат на диагностику для теста B.
Тем не менее, код продолжает цикл для этого диапазона, но не останавливается, когда мое условие о затратах выполняется. Я много пробовал, в том числе делать время и делать до утверждения, но это просто не сработает. Я действительно надеюсь, что кто-то может мне помочь! Спасибо заранее! Кирстен
Sub TGP_WES_OR_WES()
Dim Yield_A As Double
Dim Yield_B As Double
Dim Yield_A_max As Double
Dim Cost_diagnosis_A As Double
Dim Cost_diagnosis_B As Double
Yield_B = Range("C6")
Yield_A_Max = Yield_B - 0.1
Cost_diagnosis_B = Range("E15")
Cost_diagnosis_A = Range("E11")
Do While Yield_A < Yield_A_max
For Yield_A = 1 To Yield_A_max Step 0.1
Range("C5").Value = Yield_A
If Cost_diagnosis_A < Cost_diagnosis_B Then
Exit For
End If
Next Yield_TGP
Loop
Range("D1").Value = Yield_TGP
End Sub
1 ответ
У вас есть двойной цикл (оба из которых, кажется, делают одно и то же):
Do While Yield_A < Yield_A_max
For Yield_A = 1 To Yield_A_max Step 0.1
...
Next Yield_TGP
Loop
Удалить внешнюю do
петля для начинающих.
Вторая проблема, которую я вижу, заключается в том, что ваши условия выхода из цикла не зависят от итерации цикла. Так сказать Cost_diagnosis_A
а также Cost_diagnosis_B
не обновляются и не изменяются циклом. Как правило, это указывает на ошибку проектирования, поскольку почти все условия завершения цикла будут зависеть от значения, которое цикл вычисляет или обновляет (или от общего хода цикла). Интуитивно, ваше условие завершения цикла должно включать Yield_A
прямо или косвенно (из нижестоящего расчета). Возможно, вы хотите обновить значения Cost_diagnosis_A
и / или Cost_diagnosis_B
внутри вашего тела цикла, на основе Yield_A
?