【问题标题】:Can single line VBA If Then be followed by single line ElseIf Then?单行 VBA If Then 后面可以跟单行 ElseIf Then 吗?
【发布时间】:2023-01-11 13:20:52
【问题描述】:

试图跟随单行 If Then 和单行 ElseIf Then,但是 ElseIf Then 没有被执行。

不起作用。没有错误。只是不做 ElseIf。

If WD = "Sat" Or WD = "Sun" Then State = "Z"
ElseIf HH >= 16 Then State = "A"
ElseIf HH >= 13 Then State = "B"
ElseIf HH >= 5 Then State = "C"
ElseIf HH >= 4 Then State = "D"
ElseIf HH >= 0 Then State = "E"

按预期工作:

If WD = "Sat" Or WD = "Sun" Then
    State = "Z"
ElseIf HH >= 16 Then State = "A"
ElseIf HH >= 13 Then State = "B"
ElseIf HH >= 5 Then State = "C"
ElseIf HH >= 4 Then State = "D"
ElseIf HH >= 0 Then State = "E"
End If

是否可以在单行 If Then 后面加上单行 ElseIf Then's?

Microsoft Visual Basic for Applications 7.1
微软 Office 专业增强版 2013
Excel 2013

【问题讨论】:

    标签: excel vba if-statement


    【解决方案1】:

    不。内联语法是为短条件和快速 Then 和(可能)快速的小 Else 语句而设计的。如果条件很重要,则需要使用块语法。

    内联语法本身就是一个语句;在 VBA 中,语句终止符是换行符,因此如果前一行未注册为块语法条件,则 ElseIf 标记不能开始一行合法代码。

    不确定第一个 sn-p 的“无错误”是什么意思……这是一个编译错误……这会阻止代码运行:

    也就是说,还有其他方式来表达这些条件:

    State = "Z"
    If WD = "Sat" Or WD = "Sun" Then Exit Sub
    Select Case HH
        Case Is >= 16
            State = "A"
        Case Is >= 13
            State = "B"
        Case Is >= 5
            State = "C"
        Case Is >= 4
            State = "D"
        Case Is >= 0
            State = "E"
    End Select
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多