所以我在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块确实包含多行,特别是一个循环......
答案 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。