MSDN有个错误是"不能给数组赋值",即不能将整个数组指定给另一个数组.
而实际上有时行,有时又不行,刚刚写代码时又遇到了,干脆试了一下,结果是,"被赋值数组需要是动态数组".
对于类型,源数组与目标数组需要一致,即使是自定义类型也可以.
以下说明一下可以赋值的情况:
[codes=vb]Private Type MyType
kk(10)
As Long
End Type
Dim I() As MyType, J(100) As MyType
I =
J
'I是动态数组,成立[/codes]
[codes=vb]Dim I() As Long, J(100) As Long
I =
J
'I是动态数组,成立[/codes]
如果目标数组是固定数组,那么就不能完成赋值,会得到编译器的一个"不能给数组赋值"的编译错误:
[codes=vb]Dim I(100) As Long, J(100) As Long
I =
J
'编译错误:不能给数组赋值[/codes]
没有考虑是否有其它情况.
我只需要找到可行的这个方案即可.
以下是MSDN中的错误提示:
引用内容
不能给数组赋值
数组中的各元素,必须个别指定其值。这个错误的起因与解决方法如下所示:
试图将一个值指定给一个数组变量,但没有指定要将这个值指定给哪个元素。
要设置数组中的一个元素,必须指定此元素的下标。例如,若
MyArray 为一个整型数组,则表达式 MyArray = 5 是无效的,下列的表达式才是正确的:
MyArray(UBound(MyArray))
= 5
试图将整个数组指定给另一个数组。例如,假如
Arr1 是一个数组,Arr2 是另一个数组,则下列两个赋值都是无效的:
Arr1
=
Arr2 '
无效的赋值。
Arr1()
=
Arr2() '
无效的赋值。
想要将一个数组赋值给另一个数组,必须个别赋值元素。例如:
For
count = LBound(Arr2) to UBound(Arr2)
Arr1(count)
= Arr2(count)
Next
count
请注意,可以将整个数组放在一个
Variant 中,使一个 variant 变量包含整个数组:
Dim
MyArr As Variant
MyVar
= Arr2()
您可以使用与正常数组相同的下标,来引用在
variant 中的数组元素,例如:
MyVar(3)
= MyVar(1) + MyVar(5)
详细信息,请先选取有疑问的项目,然后按下 F1 键 。
|