【问题标题】:Exiting a VBA loop with multiple variables退出具有多个变量的 VBA 循环
【发布时间】:2015-08-31 00:43:02
【问题描述】:

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

我想要它做的是计算测试 A 的某个产量,测试 B 的产量是多少,两次测试的每次诊断成本相同。我编写的代码必须循环一定范围的诊断收益率,并在测试 A 的每次诊断成本低于测试 B 的每次诊断成本时退出此循环。

但是,代码一直在这个范围内循环,但在满足我的成本条件时不会停止。我尝试了很多,包括 do while 和 do until 语句,但它不起作用。我真的希望有人能帮助我!提前谢谢了!克尔斯滕

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

【问题讨论】:

    标签: vba excel loops multiple-conditions


    【解决方案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。也许您想根据Yield_A 更新循环体内Cost_diagnosis_A 和/或Cost_diagnosis_B 的值?

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2018-03-28
      • 2016-10-02
      • 2012-03-13
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多