关于vb数组的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:49:32
各位师傅你们好,我现在遇到了个问题,dim tx() as byte 和dim tx(5) as byte 有什么区别啊,
Dim px(3) As Byte
Dim tx(3) As Byte
Private Sub Command1_Click()
tx(0) = 1
tx(1) = 2
tx(2) = 3
tx(3) = 4
px = tx
End Sub
这个程序就报不能赋值给数组,但是我把程序第一行改成Dim px() As Byte就能通过了啊,这是为什么啊?麻烦讲详细点啊,谢谢

左边数组 维数是否匹配 元素个数是否匹配 赋值的结果
动态 否 是或否 成功。如果需要,左边将重新声明 (ReDim) 使其与右边匹配
动态 是 否 成功。如果需要,左边将重新声明 (ReDim) 使其与右边匹配。
动态 是 是 成功。
固定 是或否 是或否 失败并返回一个编译错误

所以数组赋值数组时 左边数组得是动态数组才行。。

Dim tx(3) As Byte
Private Sub Command1_Click()
ReDim px(3) As Byte

tx(0) = 1
tx(1) = 2
tx(2) = 3
tx(3) = 4
px = tx
End Sub

dim tx() as byte 是把数组定义成可变下标的数组,dim tx(5) as byte 是把数组定义成固定的数组。而把一个数组的值赋给另一个数组,那么第二个数组就必须定义成变长的。因此改成Dim px() As Byte就能通过。

dim txa() as byte
dim txb(5) as byte
它们都是定义数组
上面没有指定数组的长度, 下面指定了数组的长度
在没有指定数组长度的时候, 是不能直接操作的
txa(0)=1 错误
txb(0)=1 正确

txa 需要给他赋值 txa = txb
txa(0)=1 这样就不会报错

没有定义长度就当动态数组处理,定义长度就是静态数组。

很显然px(3)数组一共三个元素 你多了一个元素

不指定长度的情况下可以放不同长度的数组,如果固定长度则不能