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

VBA公共数组赋值报编译错误Can't assign to array如何解决?

错误原因
  • 你当前声明的Public myArray(5) As Variant是固定长度数组,VBA不允许对固定长度数组直接使用Array函数整体赋值,Array函数返回的是Variant类型的动态数组,直接赋值就会触发"Can't assign to array"编译错误。
  • 固定长度数组在声明时就确定了容量,后续不能修改长度,也不支持整体批量赋值操作。
解决方案

推荐优先使用动态数组方案,适配后续不定长的使用需求:

  • 方案1:将公共数组改为动态数组声明,无需预先指定长度
Option Explicit

' 声明为Variant类型可直接承接Array返回的数组,也可写为 Public myArray() As Variant
Public myArray As Variant

Sub addToArray()
    ' 直接批量赋值,后续不管数组长度多少都可以直接修改
    myArray = Array(1, 1, 0, 0, 1, 1)
    ' 示例:后续需要更长数组时直接重新赋值即可
    ' myArray = Array(1,2,3,4,5,6,7,8,9,10)
End Sub
  • 方案2:如果必须使用固定长度数组,可通过临时数组中转循环赋值
Option Explicit

Public myArray(5) As Variant

Sub addToArray()
    Dim tempArr As Variant, i As Integer
    ' 先把批量值存入临时动态数组
    tempArr = Array(1, 1, 0, 0, 1, 1)
    ' 循环逐个写入定长数组
    For i = LBound(tempArr) To UBound(tempArr)
        myArray(i) = tempArr(i)
    Next
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:06:02