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

将单元格区域赋值给数组时出现下标越界错误的技术咨询

VBA数组下标越界问题排查

问题原因

当你将Excel单元格区域直接赋值给Variant数组时,VBA会自动生成二维数组——哪怕你选择的是单行或单列区域。
你的代码中Range("A1:D1")是1行4列的区域,生成的数组维度为(1 To 1, 1 To 4),必须通过数组(行号, 列号)的二维下标格式访问。直接使用单下标myArr(3)会触发"下标越界"错误,因为该数组不存在单下标的访问维度。

解决方法

方法1:使用二维下标正确访问

直接按照数组的二维结构,用行号, 列号的格式取值:

Option Explicit

Sub assign_arr_from_range()
    Dim myArr() As Variant
    myArr = Range("A1:D1").Value
    MsgBox myArr(1, 3) ' 对应区域中第1行第3列的单元格(即C1)的值
End Sub

方法2:转换为一维数组

如果需要用单下标访问,可以通过两次Application.Transpose将单行二维数组转为一维数组:

Option Explicit

Sub assign_arr_from_range()
    Dim myArr() As Variant
    ' 两次转置处理单行区域,得到一维数组(1 To 4)
    myArr = Application.Transpose(Application.Transpose(Range("A1:D1").Value))
    MsgBox myArr(3) ' 直接访问第3个元素,对应C1的值
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:22:04