Dim a(3) As Integer
a = Array(1, 2, 3)
为什么这两句语句不能放在同一个过程中,提示无法赋值,分开在两个过程就不会出错

解决方案 »

  1.   

    Dim a As Variant
    a = Array(1, 2, 3)'这样才能行得通.
      

  2.   

    Option Explicit  ''很重要,要加上
    Dim a() '这样
    a = Array(1, 2, 3)
      

  3.   


    返回一个包含数组的 Variant。语法Array(arglist)所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。说明用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。Dim A As Variant
    A = Array(10,20,30)
    B = A(2)
    使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。如果是由类型库名称限定,则 Array 不受 Option Base 的影响。注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。
    '由以上可知
    Array(arglist)
    '是建立一个数组.而且是Variant型
    '而
    Dim a(3) As Integer 
    '已定义了数组,所以赋值不成功.
      

  4.   

    看来你还是没明白 Option Explicit 的作用
      

  5.   

    Option Explicit 
    开始我也不喜欢这个东东,每次写代码时候, 特别是写 for i =1 to N 的时候.老是不让过.郁闷得要命.
      

  6.   

    Option Explicit在标准模块中声明是对应全局的吗?
    现在我清楚啦,呵呵