首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出具有多个变量的VBA循环

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

Stack Overflow用户
提问于 2015-06-15 21:33:22
回答 1查看 145关注 0票数 0

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

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

但是,代码会在这个范围内保持循环,但不会在满足我的成本条件时停止。我尝试了很多方法,包括do while和do until语句,但就是不起作用。我真的希望有人能帮我解决问题!首先要感谢大家!柯尔斯腾

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2015-06-15 21:49:52

你有一个双循环(这两个循环似乎都在做同样的事情):

代码语言:javascript
复制
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的值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30846544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档