【发布时间】:2013-08-09 04:02:56
【问题描述】:
我正在努力实现以下目标: 用户会看到一个 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 ..
然后在If .. Then 语句中直接使用这个Input01。这样,当变量为空时,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.
希望我的问题很清楚,感谢您的帮助。
【问题讨论】:
-
没有必要在这样的代码中嵌入逻辑:你应该编写
If测试直接使用CoverageRatioInput的值。 -
但是如果
CoverageRatioInput没有值的话它会失败,对吧? -
那么你首先测试它是否有一个值......编写代码执行测试所需的所有相同逻辑都可以直接在测试中表达。
-
但是如果我有多个变量,就会导致乱七八糟的意大利面条代码。如果我有 5 个变量,它将导致 120 个不同的语句.. 这似乎有点多余。
-
处理一堆不同的结果并不一定需要等量的单独测试。您将“通用测试代码编写”代码替换为“测试”代码。您的示例代码测试一个数字是否是介于 1 和用户提供的数字之间的整数:您可以编写一个直接执行此操作的测试。
标签: vba if-statement