【问题标题】:VBA Else without if errorVBA Else 没有 if 错误
【发布时间】:2017-04-21 07:41:06
【问题描述】:

当我显然没有这个问题时,我在 VBA 中不断收到“Else without 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

【问题讨论】:

  • 它不允许我在 elseifmeb = "platinum" 行之前发布我的行。我在那之前就开始了我的如果。
  • VB.NET 与 VBA 不同。
  • 如果没有ElseIf 之前的行,我们可能无法回答您的问题。 (但如果它说类似If something Then something 的内容,那么在“单行”If 之后就不能有ElseIf。就像在以后的“单行”之后不能有End If If 语句,例如 If st >= min Then cb = st * d Else cb = 0

标签: vba excel


【解决方案1】:

我假设你的第一个 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 语句。如果您的 If-Then-Else 在一行中,则 End If 部分将变得毫无意义。

【讨论】:

    【解决方案2】:

    您的代码似乎有语法错误,错误消息告诉您。 还是您没有发布所有代码?

    查看 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
    

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 2014-08-10
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      相关资源
      最近更新 更多