更快地使用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) = XXXX
和arr(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