【问题标题】:VBA Application.Index with array causes type mismatch error 13带有数组的 VBA Application.Index 导致类型不匹配错误 13
【发布时间】:2015-02-12 22:39:54
【问题描述】:

我的宏在使用时抛出类型不匹配错误

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

谁能建议我做错了什么?

【问题讨论】:

    标签: arrays vba function excel type-mismatch


    【解决方案1】:

    当涉及到输入数组的上限时,许多工作表函数的限制刚好超过 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 的上限,那么您将需要使用循环来填充您的数组“切片”

    【讨论】:

    • 谢谢蒂姆!那解决了它。数组的大小是个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多