VBA Else没有错误

时间:2017-04-21 07:41:07

标签: excel vba excel-vba

当我明显没有这个问题时,我不断收到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

2 个答案:

答案 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-ThenElseIf-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