退出具有多个变量的VBA循环

时间:2015-06-15 13:33:22

标签: vba excel-vba loops multiple-conditions excel

作为VBA(Excel)的新手,我正在尝试制作一个工具,它决定某个测试的诊断产量必须是多少;为了具有成本效益,作为另一种诊断测试的预筛选。

我想要它做的是计算测试A的某个产量,对于测试B的产量,两个测试的每个诊断的成本是相同的。我编写的代码必须循环一定的诊断产量范围,并在测试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 个答案:

答案 0 :(得分: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_ACost_diagnosis_B。这通常表示设计错误,因为几乎所有循环终止条件都将取决于循环正在计算或更新的值(或整个循环进度)。直观地,您的循环终止条件应直接或间接(来自下游计算)合并Yield_A。您可能希望根据Cost_diagnosis_A更新循环体内Cost_diagnosis_B和/或Yield_A的值?