Excel for Mac 2011:UBound()不起作用
我正在为Excel 2011 for Mac 2011制作现有的启用macros的电子表格function。
我有一个函数( 源 )search数组指定的值:
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function
它适用于Excel 2013,但在Excel 2011 for Mac 2011中,我收到错误消息:
Runtime error '9': Subscript out of range
我把它弄坏了,发现UBound调用是导致错误的原因。
我想尽可能less地改变可维护性。 我怎样才能解决这个错误的Mac版本?
在此先感谢您的答复!
编辑: @Siddharth Rout的解决scheme是现货,但由于我在一个循环内search数组,我不得不修改循环重置每次迭代之间的数组如下(以防其他人遇到相同的问题!):
' --- START Reset Array for OS X --- Dim OS_X_Hack(99) As String For intIndex = 0 To 99 OS_X_Hack(intIndex) = Original(intIndex) Next Erase Original() ReDim Original(0 To 99) As String For intIndex = 0 To 99 Original(intIndex) = OS_X_Hack(intIndex) Next Erase OS_X_Hack() ' --- END Reset Array for OS X ---
好的这是我的观察。 如果您在程序中调用一次函数,那么它将正常工作。 例如
Sub Sample() Dim a As Variant Dim s As String Dim strTemp As String s = "CC" strTemp = "A,B,C,D" a = Split(strTemp, ",") Debug.Print IsInArray(s, a) End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function
但是,如果你在程序中调用了两次,那么你将得到一个错误的Runtime error '9': Subscript out of range
。 也许这是一个Excel 2011的错误?
Sub Sample() Dim a As Variant Dim s As String Dim strTemp As String s = "CC" strTemp = "A,B,C,D" a = Split(strTemp, ",") Debug.Print IsInArray(s, a) s = "A" Debug.Print IsInArray(s, a) End Sub
解
重新创buildarrays。 看到这个例子。
Sub Sample() Dim a As Variant Dim s As String Dim strTemp As String s = "CC" strTemp = "A,B,C,D" a = Split(strTemp, ",") Debug.Print IsInArray(s, a) s = "A" a = Split(strTemp, ",") Debug.Print IsInArray(s, a) End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function
这个解决scheme的信用由Brian Hinchey解答 。 使用下面的代码,我可以在Excel for Mac 2011中的循环中调用IsInArray。
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = Not IsError(Application.Match(stringToBeFound, arr, 0)) End Function