有没有一种更有效的方法来处理基于多个标准的代码执行,而不是我在下面写的?对于三个标准,您可能有九个替代结果,并且会随着每个新标准的增加而呈指数级增长.
我有一些代码有六个单独的标准,你可以使用其中一个或全部来实现想要的结果.使用以下方法检查选择了哪些条件会强制创建36个单独的代码块,这使得添加新代码变得很困难.
我对这个特定的项目有一个完整的创意块,并且在我的生活中无法找到一种更有效的方法,如果需要进一步的标准,将更容易扩展.
我很感激任何人都可以提供帮助.我可以发布实际代码,但我对一般解决方案更感兴趣,以便我能够在将来在其他项目中实现它,而不是解决一个特定问题.
它不需要是"IsEmpty",并且可以用任何布尔或者字符串,整数或任何其他情况结果替换.
Select Case IsEmpty(x) & IsEmpty(y) & IsEmpty(z)
Case Is = True & True & True
'do stuff
Case Is = False & True & True
'do stuff
Case Is = True & False & True
'do stuff
Case Is = True & True & False
'do stuff
Case is = False & False & True
'do stuff
End Select
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:
自从撰写上述问题以来,我一直在尝试解决我在if语句中呈指数增长的问题.我提出了以下方法,该方法运作得相当好,并且认为我会分享以防其他人遇到类似的问题.
我没有为每个可能的结果都有一个if语句,而是创建了一个数组,该数组被赋予与每个参数的函数名相对应的名称.然后我在每个循环中调用这些函数.这样,如果我想添加新参数,我可以添加另一个函数.
如果我有六个参数相当于36个if语句来说明每个潜在的搜索结果.使用这种方法我只需要六个短函数.
我确信我可以对代码进行数百万次改进,使其运行得更快,但在处理多个参数时,它可以很好地避免组合爆炸.
Public Sub SearchStuff()
Dim book As Workbook
Dim shResult As …Run Code Online (Sandbox Code Playgroud)