输出/打印变量,在代码中,在if语句中

时间:2013-08-07 16:47:22

标签: vba if-statement

我正在努力实现以下目标: 向用户显示excel电子表格,其中包含可以更改的假设列表。

Title       |     Value        |
Input01     |       10         |  =
Input02     |       2          |  >=
Input03     |       800        |  >=
Input04     |       4          |  >=
Input05     |       2          |  <=

如果符合假设,则会有If .. Then语句提取数据。但是,如果假设是空白的,则不应将其包括在If .. Then声明中。

If x = Input01Value And y >= Input02Value _
And z >= Input03Value And a >= Input04Value _
And b <= Input05Value Then

用户省略Input03

If x = Input01Value And y >= Input02Value _
And a >= Input04Value And b <= Input05Value Then

现在我可以检查每个值是否存在,然后用另一个带有适当变量的If语句跟随它。但这似乎有点多余。

我想知道以下是否可能:

Input 01 = ""
If Input01Value != "" Then Input01 = "x = " & Input01Value
'Then use join or something similar to join all of them ..

然后在Input01语句中直接使用此If .. Then。这样,当变量为空时,And ..不包括在内,If语句不会失败 例如。 (我知道这不起作用,只是说明了这个场景)

VBA: If Input01 Then
Result while compiling: If x = Input01Value Then

请注意,我知道我可以做以下事情:
If Boolean And Variable2 > 4 Then然后让BooleanVariable2填充单元格中的值,但问题是,例如,如果用户决定省略Variable2 (这是合理的)它会失败。例如。 If (Boolean = True) And > 4 Then

希望我的问题很明确,谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

根据字符串运算符和两个值使用对select case进行操作的函数怎么样?

Function conditionalString(condition As String, x As Variant, y As Variant) As Boolean
Select Case condition
    Case "="
        If (x = y) Then
            conditionalString = True
        Else
            conditionalString = False
        End If
        Exit Function
    Case ">="
        conditionalString = (x >= y)
        Exit Function
    Case "<="
        conditionalString = (x <= y)
        Exit Function
    Case ">"
        conditionalString = (x > y)
        Exit Function
    Case "<"
        conditionalString = (x < y)
        Exit Function
    Case Else
        conditionalString = False
End Select
End Function

然后你可以在调用所有假设之前使用另一个函数,比如说“检查值是否为空”。

答案 1 :(得分:1)

扩展我的评论,您可以使用类似的东西来测试每一行输入。

Function TestIt(testValue,inputOperator,inputValue) As Boolean
    If Len(inputValue)=0 Then
        TestIt=True 'ignore this test: no value supplied
    Else
        TestIt=Application.Evaluate(testValue & inputOperator & inputValue)
    End If
End function