VBA排名标准宏-Else无If错误

VBA排名标准宏-Else无If错误,vba,excel,if-statement,rank,Vba,Excel,If Statement,Rank,我试图创建一个宏,根据单元格中的值返回给定的秩。它所基于的值(B24)将决定排名并将其放入B26。下面是我使用的排名和代码。例如,大于2B的值应为“1”。我怎样才能让它工作?我目前收到“编译错误:没有if的Else” 子标准() On错误转到catch_错误 工作表(“表1”)。激活 将分数设置为整数,结果设置为字符串 分数=范围(“B24”)。值 如果得分>2000000000,则结果=“1” ElseIf得分>=150000000,得分=500000000,得分=250000000,得分 在

我试图创建一个宏,根据单元格中的值返回给定的秩。它所基于的值(B24)将决定排名并将其放入B26。下面是我使用的排名和代码。例如,大于2B的值应为“1”。我怎样才能让它工作?我目前收到“编译错误:没有if的Else”

子标准()
On错误转到catch_错误
工作表(“表1”)。激活
将分数设置为整数,结果设置为字符串
分数=范围(“B24”)。值
如果得分>2000000000,则结果=“1”
ElseIf得分>=150000000,得分=500000000,得分=250000000,得分
  • 在结果=范围(“B26”)之前的行上写上“如果结束”
  • Dim score为Double
    ,不是整数,您的值太高,不是整数
  • 这一点应该颠倒过来:

    范围(“B26”)。值=结果


  • 单行
    If
    语句不能包含
    Else

    If score > 2000000000 Then result = "1"
    
    您需要按照以下方式对其进行重组:

    If score > 2000000000 Then
        result = "1"
    ElseIf score >= 1500000000 And score <= 1999999999.99 Then
        result = "2"
    ElseIf score >= 500000000 And score <= 1499999999.99 Then
        result = "3"
    ElseIf score >= 250000000 And score <= 499999999.99 Then
        result = "4"
    ElseIf score < 249999999.99 Then
        result = "Out Of Scope"
    End If
    
    如果分数>2000000000,则
    结果=“1”
    
    对于其他人所说的内容,ElseIf得分>=150000000,得分=500000000,得分=250000000,得分:

  • 不能将单行if与Else或Else if一起使用

  • 分数必须是双倍的

  • 最后一行是反向的

  • 加上

  • 不需要小于参数,因为一旦if语句找到true,它将停止查找
  • 代码:


    @ismphoto123-
    模糊分数为双倍
    这就是我修复它的方法。谢谢快速提问——假设我必须在两个单元格中进行选择。如果一个为空,则使用另一个来确定排名。我该怎么办?例如B26或B28@ismphoto123-
    如果是空的(范围(“B26”).Value),则得分=范围(“B28”)。否则得分=范围(“B26”)。Value
    @ismpoto123新问题需要自己的帖子。俄罗斯娃娃问题在这里是不受欢迎的。请自己尝试,然后发布一个新问题,包括你尝试过的内容和失败的地方。关于这个问题,已经回答了。请选择一个正确的。快速提问——假设我必须在两个单元格中进行选择。如果一个为空,则使用另一个来确定排名。我该怎么办?B26或B28类似的东西-现在你有三个答案,你有责任选择一个是“正确”的答案。您可以通过单击答案旁边的复选标记来选择它。选择您认为最有用的和/或您使用的。通过选择正确答案,它将关闭已回答的问题,并将其从未回答队列中删除。不要误以为这是选择我的请求。我只是在已经很好的答案上加了一件事,如果你选择另一件,我的感情不会受到伤害。
    If score > 2000000000 Then
        result = "1"
    ElseIf score >= 1500000000 And score <= 1999999999.99 Then
        result = "2"
    ElseIf score >= 500000000 And score <= 1499999999.99 Then
        result = "3"
    ElseIf score >= 250000000 And score <= 499999999.99 Then
        result = "4"
    ElseIf score < 249999999.99 Then
        result = "Out Of Scope"
    End If
    
    Sub Criteria()
    
    On Error GoTo catch_error
    
    With Worksheets("Sheet1")
        Dim score As Double, result As String
        score = .Range("B24").Value
    
        If score > 2000000000 Then
            result = "1"
        ElseIf score >= 1500000000 Then
            result = "2"
        ElseIf score >= 500000000 Then
            result = "3"
        ElseIf score >= 250000000 Then
            result = "4"
        Else
            result = "Out Of Scope"
        End If
    
        .Range("B26").Value = result
    
        Exit Sub
     End With
    catch_error:
        MsgBox "Some Error Occurred"
    
    End Sub