如果那么Else Excel VBA - " End If"需要的?

时间:2016-06-01 09:39:05

标签: excel vba if-statement udf

所以我在Excel vba中编写了一个UDF:

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

现在我注意到,该功能似乎工作正常,但是我想知道我是否应该使用"结束如果"在代码中的(*)位置?如果我这样做,我收到一个错误消息,声明如果没有相应的IF那么"如果"阻止,虽然!?所以一般情况下,如果"结束,那就不需要#34;在if then else结构?提前致谢!

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

3 个答案:

答案 0 :(得分:4)

如果你把IF THEN ELSE放在一行,那么if条件就在那一行结束,无论如何都会执行下一行。

例如,

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

这种情况

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

如果为false,则x为2,y为1

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

这种情况,

如果为true,则x为1,y为空

如果为false,则x为2,y为1

另外,如果你这样做

If true then x = 1 else 
x = 2

x永远是2,无论是真还是假

答案 1 :(得分:0)

如果您不想使用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

答案 2 :(得分:-1)

是的,您需要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。