如果值包含一定数量

时间:2014-02-12 07:21:47

标签: excel excel-vba vba

我正在尝试编写一个可以根据值更改结果的宏。 这些数字是5位数,只能是1,2或3

如果数字全部为1则结果将通过。

如果数字包含2,那么结果就是行动。

如果数字包含3,则结果将失败。

例如:

11111结果传递

11211结果是动作

32111结果失败

这是我创建的代码(下面),但我不知道如何使用InStr控件,或者即使我应该使用它

Private Sub result()
   Dim points As Integer, result As String

    Me.txtresult.Value = Val(cboImage.Value) & Val(cbofruit.Value) & Val(cboveg.Value) & Val(cboProcedure.Value) & Val(cboDescription.Value)
    points = Val(Me.txtresult.Value)

    Select Case points
        Case InStr(1, 1)
            result = "Pass"
        Case InStr(1, 2)
            result = "Action"
        Case InStr(1, 3)
            result = "Fail"
    End Select
    Me.txtresult.Value = result
End Sub

由于

2 个答案:

答案 0 :(得分:1)

检查这是否有效。我已将Select块替换为If

Private Sub result()
Dim points As Integer, result As String

Me.txtresult.Value = Val(cboImage.Value) & Val(cbofruit.Value) & Val(cboveg.Value) & Val(cboProcedure.Value) & Val(cboDescription.Value)
points = Val(Me.txtresult.Value)

If InStr(points, "3") > 0 Then
result = "Fail"
Else
    If InStr(points, "2") > 0 Then
    result = "Action"
    Else
    result = "Pass"
    End If
End If
Me.txtresult.Value = result
End Sub

答案 1 :(得分:0)

为什么你需要一个宏呢?像这样的公式可以得到所需的结果:

=IF(ISNUMBER(FIND("3",A1)),"FAIL",IF(ISNUMBER(FIND("2",A1)),"ACTION","PASS"))

假设您的值在单元格A1中。