Cam*_*ter 5 arrays excel vba excel-vba excel-vba-mac
我正在努力在Excel for Mac 2011上创建一个现有的启用宏的电子表格.
我有一个函数(Source)搜索数组的指定值:
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Run Code Online (Sandbox Code Playgroud)
它在Excel 2013中完美运行,但在Excel for Mac 2011上,我收到错误:
Runtime error '9': Subscript out of range
Run Code Online (Sandbox Code Playgroud)
我打破了它,发现UBound调用是造成错误的原因.
我想尽可能少地改变可维护性.如何修复Mac版本的此错误?
在此先感谢您的回复!
编辑: @Siddharth Rout的解决方案很明显,但由于我在循环中搜索数组,我不得不修改循环以在每次迭代之间重置数组,如下所示(如果其他人遇到同样的问题!):
' --- 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 ---
Run Code Online (Sandbox Code Playgroud)
好的,这是我的观察。如果您在过程中调用该函数一次,那么它将正常工作。例如
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
Run Code Online (Sandbox Code Playgroud)

但是,如果您在过程中调用它两次,则会出现错误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
Run Code Online (Sandbox Code Playgroud)

解决方案
重新创建数组。请参阅此示例。
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
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1613 次 |
| 最近记录: |