VBA 不能给数组赋值,其实只是不能给静态数组整体赋值

1 问题:VBA报错:不能给数组赋值!

  • 其实并不是 所有数组不能赋值
  • 其实是不能给静态数组,整体赋值!
  • 只是因为当前处理的是一个静态数组

2 什么是静态数组 (只是大小静态!! 赋值可变!)

2.1 静态数组

  • 静态数组,不是数组完全不能修改
  • 而是数组大小已经确定了

2.2 静态数组不能被整体赋值

  • 静态数组,不能被整体赋值,无论用array()  或者[{}]等各种方法都一样不行
  • array()函数返回的必须是变量,或变量对等的动态数组,不能赋值给静态数组
  • arr2 = [{3, 4, 5, "6", 7, 0, 1, 2, 8, 9}] 也不行
  • arr2() = Array(3, 4, 5, "6", 7, 0, 1, 2, 8, 9)

2.3 静态数组也不能被重复定义,数组大小

  • 也不能被重复 定义大小

2.4 但是,静态数组可以被单个元素赋值

3 动态数组 可以被各种赋值

  • 动态数组可以被整体赋值改变,或者被单个改版
  • 但是动态数组的赋值同样要小心
  • 合理使用 redim preserve  arr() 大小,保留之前的值


版权声明:本文为xuemanqianshan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。