更快地使用If / Else条件

我有多达40个If / ElseIf条件,代码是:

If b = 1 Then d = XXXX ElseIf b = 2 Then d = YYYY ElseIf b = 3 Then d = AAAA ElseIf b = 40 Then d = ZZZZ End If 

有没有更快的方法做到这一点,所以我没有所有的If / ElseIf条件?

使用一个数组

请记住,数组默认情况下是0索引,尽pipe您可以重写该数组,并且在您重新设置数组时使用所需的任何索引。

 Dim MyArray() Dim ind As Long MyArray = Array("XXXX","YYYY","AAAA","ZZZZ") ind = 2 MsgBox MyArray(ind) 

这将返回第三个元素或AAAA

只要改变任何你想要返回的元素

也许使用数组?

所以arr(1) = XXXXarr(2) = YYYY

这样你可以

 d = arr(b) 

最好的方法是通过一些数组进行索引。 为了避免在每次需要时创build数组,可以使用关键字Static来声明它。 这样,索引是非常快的(特别是对于更大的数组)。 这是一种时空权衡 :数组保持在内存中,但索引它是非常快的。

在下面,我创build一个使用静态数组将索引转换为String的函数。 但是,请注意,您可能有兴趣通过将string放在一些隐藏的工作表中并使其更加dynamic。

 Function myString(ByVal index As Long) As String Static ar As Variant ' <-- static: filled once and keeps valid between function calls If IsEmpty(ar) Then ar = Array("XXXX", "YYYY", "AAAA", "ZZZZ") myString = ar(index - 1) End Function Sub TestIt() Debug.Print myString(1) Debug.Print myString(4) End Sub