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
相关产品推荐
相关产品推荐

