If then Else Excel VBA - "End If" 需要吗?

If then Else Excel VBA - "End If" needed?

所以我正在 Excel vba 中编写一个 UDF 类型:

function ... if ... then ... else for i... to ... equations ... next i * end function

现在我注意到,该函数似乎工作得很好,但是我想知道我是否不应该在代码中 (*) 的位置使用 "end if"?如果我这样做了,我会收到一条错误消息,指出没有 if 与 "end if" 块对应的 IF,但是!?所以一般来说,在 if then else 结构中不需要 "end if" 吗?提前致谢!

/edit: 'if ... then ... else' 是一个单行。然而,else 块确实包含多行,特别是一个循环...

是的,您需要 End If 语句,否则会出错。

只有当你的 If 语句是一行时你才不需要它,比如:

If 1 = 1# Then result = "true"

但是:

If 1 = 1# Then
    result = "true"

除非像这样用 End If 关闭它,否则它不起作用:

If 1 = 1# Then
    result = "true"
End If

无法确切地了解您的函数结构,但如果它在没有 End If 的情况下工作,那么我猜它是一个有效的单行 If 语句,或者您的代码中某处有 On Error Resume Next。

如果将 IF THEN ELSE 放在一行中,则 if 条件在该行结束,无论如何都会执行下一行。

例如,

If true then x =1 else x = 2
y = 1

这个案例

如果为真,x 将为 1,y 将为 1

如果为假,x 将为 2,y 将为 1


if true then
    x = 1
else
    x = 2
    y = 1
end if

这种情况,

如果为真,x 将为 1,y 将为空

如果为假,x 将为 2,y 将为 1


另外,如果你这样做

If true then x = 1 else 
x = 2

无论真假x都为2

如果你不想要END IF,但又想要IF、ELSE IF、ELSE,就全部写在一行中。
使用“:”进行多项操作。

Sub test(Optional x As Long)

    If x < 0 Then MsgBox "x<0" Else If x = 0 Then MsgBox "x=0": MsgBox "I told ya x=0" Else MsgBox "x>0": MsgBox "I told ya x>0"

End Sub