我要远程/可重复使用的存储Case
语句多值 ExpressionList 。
有没有一种方法可以将远程列表输入到Case
中(我唯一想到的就是数组)。
这是正常的:
Select Case(LCase(strProduce))
Case "apple", "pear", "banana"
'Do Frutie stuff
Case "corn", "care-rot", "radish"
'Do Vegitapole stuff (get the spelling reference?)
End Case
但是这些案例列表经常使用,我想将它们移到中心位置。所以我想要更多类似的东西(而不必在数百个地方重做代码)。
aryFruit = Array("apple", "pear", "banana", "grape")
aryVegetable = Array("corn", "carrot", "radish")
Select Case(LCase(strProduce))
Case In aryFruit
'Do Fruit stuff
Case In aryVegetable
'Do Vegitapole stuff (get the spelling reference?)
End Case
如果案例只是很多单身案例,它将只适用于变量,但是我需要将其作为一个列表,因为金额可能会发生变化,如上述“所需”示例所示[葡萄]。我试图保留现有的Case语句,而不要转换为大量的If
和For
循环(案例多于两个)。
答案 0 :(得分:4)
您可以创建将项目映射到其各自类型的字典
Set produce = CreateObject("Scripting.Dictionary")
produce.CompareMode = vbTextCompare
produce("apple") = "fruit"
produce("pear") = "fruit"
produce("banana") = "fruit"
produce("grape") = "fruit"
produce("corn") = "vegetable"
produce("carrot") = "vegetable"
produce("radish") = "vegetable"
然后进行简单查找:
Select Case produce(strProduce)
Case "fruit"
'Do fruit stuff
Case "vegetable"
'Do vegetable stuff
End Case