当我明显没有这个问题时,我不断收到VBA中的“Else without if if”错误。有谁知道如何修理它?它带我去以elseif memb =“platinum”开头的elseif语句 以下是我的代码:
ElseIf memb = "Platinum" Then d = 0.01
ElseIf memb = "Black" Then d = 0.03
End If
If st >= min Then cb = st * d Else cb = 0
End If
If cb >= thresh Then MsgBox ("cb is greater than thresh")
End If
tac = st + cb
Range("B5").Value = st
Range("B7").Value = cb
Range("B9").Value = tac
答案 0 :(得分:2)
我假设您的第一个If
语句是这样的:
If memb = "Gold" Then d = 0.005
ElseIf memb = "Platinum" Then d = 0.01
ElseIf memb = "Black" Then d = 0.03
End If
如果在与Then
关键字相同的行上执行某些处理,则VBA会将其视为单个非嵌套If
语句。这意味着之后的任何内容都将被视为新语句,与先前的If
语句无关。
您可以做的是将处理语句放在每个If-Then
和ElseIf-Then
语句后的下一行。
实施例,
If memb = "Gold" Then
d = 0.005
ElseIf memb = "Platinum" Then
d = 0.01
ElseIf memb = "Black" Then
d = 0.03
End If
考虑到这一点,您可能希望在代码中修复后续的If-Then-Else
语句。如果您的End If
在一行中,则If-Then-Else
部分变得毫无意义。
答案 1 :(得分:0)
您的代码似乎有语法错误,错误消息告诉您。 或者您没有发布所有代码?
查看MS文档:https://msdn.microsoft.com/de-de/library/752y8abs.aspx
你真的坚持语法吗?
如果没有MS OFfice这应该(更好的可读性)工作:
If memb = "Platinum" Then
d = 0.01
ElseIf memb = "Black" Then
d = 0.03
End If
If st >= min Then
cb = st * d
Else
cb = 0
End If
If cb >= thresh Then
MsgBox ("cb is greater than thresh")
End If
tac = st + cb
Range("B5").Value = st
Range("B7").Value = cb
Range("B9").Value = tac