选择Case错误输出&不匹配错误

时间:2016-05-16 14:37:54

标签: excel vba

虽然我已经编写了一些其他的东西,但我对VBA Excel相对较新。 我试图交叉比较1到0之间的一列数字称为得分,结果可以是4中的一个,取决于值。然而,我只得到相同的结果(1),无论我如何编码(我只尝试使用“To”或仅使用“<> =”)但没有任何作用。我似乎无法让它通过我的专栏工作,一次只在一个单元格中(每当我将范围扩展到“B2:B7”时,它会给我一个不匹配的错误。

我想要的是它实际上给了我正在寻找的结果并通过一个或多个单元格进行处理。

感谢您的时间

以下是代码:

Sub Vertical_Analysis()

    Sheets("Vertical").Select

    Dim score As Integer
    score = Range("B2").Value

    Dim result As String
    Select Case score
        Case Is >= 0.15
            result = "1"
        Case 0.11 To 0.14
            result = "0.6"
        Case 0.08 To 0.1
            result = "0.3"
        Case Is <= 0.07
            result = "0"
    End Select

    Range("B21").Value = result

End Sub

1 个答案:

答案 0 :(得分:3)

首先score需要是双倍而不是整数。

然后循环使用For Each。

最后一部分.Range("B21").Offset(i).Value = result将每个结果向下移动一行,以便它们不会相互替换。

试试这个:

Sub Vertical_Analysis()

    Dim score As Double, result As String
    Dim Rng As Range, i As Long

    i = 0

    With Sheets("Vertical")
        For Each Rng In .Range("B2:B7")
            score = Rng.Value
            Select Case score
                Case Is >= 0.15
                    result = "1"
                Case 0.11 To 0.14
                    result = "0.6"
                Case 0.08 To 0.1
                    result = "0.3"
                Case Is <= 0.07
                    result = "0"
            End Select
            .Range("B21").Offset(i).Value = result
            i = i + 1
        Next Rng
    End With
End Sub