VBA中的IF语句

时间:2013-12-12 10:32:35

标签: vba excel-vba excel

我正在使用if语句给出错误消息 End if without block if

我已尝试将End if放在sub之前和if语句之后。

我还尝试在每个end if语句的末尾放置2个IF语句。

If IDtype = "UK" Then sqluserfix = " & UserId & "

If IDtype = "NE" Then sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"

End If

有什么想法吗?

感谢。

5 个答案:

答案 0 :(得分:15)

在您的情况下,您使用的是所谓的一行语句

If (true) then MsgBox "No End If required!"

这有效,并且不需要End If声明,因为它是单行

因为执行End If语句导致错误发生的原因,因为您尝试结束尚未启动的If语句(< em> 2个单行)。

在C#中,例如;分号用作行分隔符。在VB / VBA中,使用 Return 键分隔行。


你可以用其他两种方式做同样的事情

1)

If (true) then _ 
    MsgBox "No End If required!"

2)

If (true) then
    MsgBox "End If required!!!"
End If

但是在您的情况下,似乎更合适的决定将使用IfElseIf这样的组合

If IDtype = "UK" Then
    sqluserfix = " & UserId & "
ElseIf IDtype = "NE" Then
    sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"
End If

答案 1 :(得分:7)

VBA If语句可以内联完成:

If IDtype = "UK" Then sqluserfix = " & UserId & "

或者在多行上完成:

If IDtype = "NE" Then
    sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"    
End If

您的问题是您要同时混合两种格式,并且您的问题将得到解决。

答案 2 :(得分:3)

如果您使用多行格式,则只能使用End If

If something Then
    'do something
End If

答案 3 :(得分:1)

在这种情况下,请使用ElseIf

If IDtype = "UK" Then 
  sqluserfix = " & UserId & "
ElseIf IDtype = "NE" Then 
  sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"
End If

顺便说一句,这句话也可以这样:

If IDtype = "UK" Then 
  sqluserfix = " & UserId & "
End If

If IDtype = "NE" Then 
  sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"
End If

Formating Code in VBA向您展示如何以正确的方式执行此操作。

答案 4 :(得分:1)

只有2种选择吗?只是惊讶没有人建议Select Case

Select Case IDtype
    Case "UK"
        sqluserfix = " & UserId & "
    Case "NE"
        sqluserfix = "(select USER_ID from USER_PARAMS where USER_ID2='" & UserId & "')"
End Select