首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel VBA IF then IF语句

Excel VBA IF then IF语句
EN

Stack Overflow用户
提问于 2017-10-16 21:12:55
回答 4查看 3.6K关注 0票数 2

我使用了"If Then If msgbox vbYesno“语句,但我不确定如何正确地摆脱它(我知道Goto不是干净的)。

谁能告诉我我的错误是什么?我没有发现任何人使用类似的东西。

代码语言:javascript
运行
复制
Sub IF_THEN_IF()

If Sheet1.Range("A1").Value > 500 Then
    If MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") = vbYes Then
        Range("H11").FormulaR1C1 = "My Formula"
    Else
        GoTo Jump
    End If
Else

Jump:    
    Range("H11").FormulaR1C1 = "I have Jumped"

End If

End Sub
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-16 21:59:09

如果你不打算“跳”,你可以离开你的过程,跳到另一个方向:

代码语言:javascript
运行
复制
Sub IF_THEN_IF()
    If Sheet1.Range("A1").Value > 500 Then
        If MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") = vbYes Then
            Range("H11").FormulaR1C1 = "My Formula"
            Exit Sub
        End If
   End If
   'Jump
    Range("H11").FormulaR1C1 = "I have Jumped"
End Sub

另一种选择是使用布尔变量:

代码语言:javascript
运行
复制
Sub IF_THEN_IF()
    Dim Jump as Boolean
    Jump = Sheet1.Range("A1").Value <= 500
    If Not Jump Then Jump = MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") <> vbYes
    If Jump Then
        Range("H11").FormulaR1C1 = "I have Jumped"
    Else
        Range("H11").FormulaR1C1 = "My Formula"
    End If
End Sub
票数 2
EN

Stack Overflow用户

发布于 2017-10-16 21:37:31

这个答案是对你对Vityaya的回答的评论的回应。

Jump中的代码转换为子例程,并根据需要调用它。

代码语言:javascript
运行
复制
Sub IF_THEN_IF()

With Sheet1 

    If .Range("A1").Value > 500 Then

        Dim res as Variant
        res = MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines")

        If res = vbYes Then
            .Range("H11").FormulaR1C1 = "My Formula"
        Else
            Jump
        End If

    Else   

        Jump

    End If

End Sub

Sub Jump()
   'code here
End Sub
票数 1
EN

Stack Overflow用户

发布于 2017-10-16 21:15:23

一种可能的选择如下所示:

代码语言:javascript
运行
复制
Sub IfThenElse()

    With Sheet1
        If .Range("A1").value > 500 Then
            If MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") = vbYes Then
                .Range("H11") = "My Formula"
            Else
                .Range("H11") = "I have Jumped"
            End If
        Else
            .Range("H11") = "I have Jumped"
        End If
    End With

End Sub

您有两个嵌入的if。仅此而已。在Excel VBA IF then IF statement @Scott Holtzmann的回答中,你可能会看到如何通过遵循DRY method来避免写两次“我跳过了”。

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

https://stackoverflow.com/questions/46771236

复制
相关文章

相似问题

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