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
所以我正在 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