You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WorksheetFunction.Index触发类型不匹配运行时错误13的原因

运行时错误13(类型不匹配)原因分析

问题场景

变量定义:

oTemplateStartRow = 3

arrLast是维度为(1 To 6385, 1 To 6)的数组,我编写代码意图提取该数组的第二列并粘贴到活动工作表的第二列:

Cells(oTemplateStartRow, 2).Resize(UBound(arrLast, 1), 1).Value = WorksheetFunction.Index(arrLast, 0, 2)

运行时触发错误:

类型不匹配 运行时错误13

补充说明:以下测试程序可正常运行,但使用我的变量(arrLast、oTemplateStartRow)时却报错:

Sub PartOfTheArray()
Dim ar(1 To 20, 1 To 5)
Dim i As Long, j As Long
    For i = 1 To 20
        For j = 1 To 5
            ar(i, j) = i + j * 0.01
        Next j
    Next i
    Cells(1, 1).Resize(20, 1).Value = ar ' 第1列 '
    Cells(1, 2).Resize(20, 1).Value = WorksheetFunction.Index(ar, 0, 2) ' 第2列 '
    Cells(1, 3).Resize(10, 1).Value = WorksheetFunction.Index(ar, 0, 4) ' 第4列的部分内容 '
    Cells(1, 4).Resize(1, 5).Value = ar ' 第1行 '
    Cells(2, 4).Resize(1, 5).Value = WorksheetFunction.Index(ar, 7, 0) ' 第7行 '
    Cells(3, 4).Resize(1, 3).Value = WorksheetFunction.Index(ar, 9, 0) ' 第9行的部分内容 '
End Sub

错误原因

  1. 大数组下WorksheetFunction.Index的返回格式问题
    测试代码的数组只有20行,WorksheetFunction.Index返回的是二维数组,和单元格区域的赋值要求匹配。但当数组行数达到6385行时,WorksheetFunction.Index会返回一维数组,而单元格区域需要二维数组赋值,直接赋值就触发类型不匹配。

  2. 数组数据类型或维度不符
    如果arrLast是从工作表读取的数组,可能存在混合数据类型(比如部分单元格是文本、部分是数值),或者实际维度和声明的(1 To 6385, 1 To 6)不一致(比如原数据区域有空行),导致Index返回的数组无法和单元格区域兼容。

解决方法

  • 改用Application.Index:它处理大数组时会返回正确的二维数组,替换后代码如下:
    Cells(oTemplateStartRow, 2).Resize(UBound(arrLast, 1), 1).Value = Application.Index(arrLast, 0, 2)
    
  • 手动提取数组列:循环生成新的二维数组再赋值,避免函数返回格式问题:
    Dim tempArr() As Variant
    Dim i As Long
    ReDim tempArr(1 To UBound(arrLast, 1), 1 To 1)
    
    For i = 1 To UBound(arrLast, 1)
        tempArr(i, 1) = arrLast(i, 2)
    Next i
    
    Cells(oTemplateStartRow, 2).Resize(UBound(tempArr, 1), 1).Value = tempArr
    
  • 检查数组有效性:确认arrLast的生成逻辑,确保它是标准的二维Variant数组,无混合数据类型或维度偏差。

内容的提问来源于stack exchange,提问作者orangecoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:51:16