我正在使用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
有什么想法吗?
感谢。
答案 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
但是在您的情况下,似乎更合适的决定将使用If
和ElseIf
这样的组合
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