我正在努力实现以下目标: 向用户显示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
然后让Boolean
和Variable2
填充单元格中的值,但问题是,例如,如果用户决定省略Variable2
(这是合理的)它会失败。例如。 If (Boolean = True) And > 4 Then
。
希望我的问题很明确,谢谢你的帮助。
答案 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