带数组的VBA Application.Index导致类型不匹配错误13

时间:2015-02-12 22:39:55

标签: arrays vba function excel-vba type-mismatch

当我使用

时,我的宏会抛出类型不匹配错误
Myarr= Application.Index(arr,0,1)

我尝试添加显式选项并将变量定义为变体,但似乎没有任何效果。

arr数组是从CSV文件创建的,包含100000行和11列。
当我在观察窗口中检查时arr看起来很好(我可以看到每行和每列的值)

以下是代码:

Sub ArrTest()
    Dim Myarr 
    Dim Arr 
    Dim wb As Workbook 
    Set wb = Workbooks.Open("F:\People.csv")
    Arr = wb.Sheets(1).Range("A1").CurrentRegion.Value
    Myarr = Application.Index(Arr, 0, 2)
End Sub

任何人都可以建议我做错了吗?

1 个答案:

答案 0 :(得分:2)

当涉及到输入数组的上限时,许多工作表函数的限制只有65k左右,因此您可能会遇到这种情况。以65k为我工作,66k行失败。

Sub ArrTest()
    Dim Myarr
    Dim Arr

    Arr = Range("a1:C65000").Value
    Myarr = Application.Index(Arr, 0, 1) '<<< OK

    Arr = Range("a1:C66000").Value
    Myarr = Application.Index(Arr, 0, 1) '<<<fails

End Sub

如果您希望能够处理超过65k的上限,那么您将需要使用循环来填充数组“slice”