如何将Select语句与选项数组结合使用

时间:2019-03-27 17:41:53

标签: vbscript

我要远程/可重复使用的存储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语句,而不要转换为大量的IfFor循环(案例多于两个)。

1 个答案:

答案 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