vb 数组下标越界问题,大概是求大神帮我看一看!

其中调用了个函数,大概和下面一组差不多Dim str, I%Dim AI(31) As SingleAR = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)一个算法print结果 (是错误的)这是第二种方法
Dim ar(31) As SingleFor I = 0 To 31 ar(I) = I + 1print ar(i) '这个地方的一堆数字和上一组array中的一样 Next I一个算法print 结果(是对的)

该怎么解决呢?

如果能在线咨询就更好了~
最新回答
晚安旧恋人

2025-03-22 17:07:04

Array函数的返回值是Variant型,所以它所赋值的数组也必须是Variant型的,即:
Dim AR(31) 'As Variant是可以省略的
AR = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
这样就没问题了,当然后续运算中要注意AR数组的元素都是Variant型

补充:之所以Array的返回值是Variant型,是因为它的参数是可以各种类型混合的,比如:
Array(1, "张三", True, 22.5, #2014-12-01#)
这样的话就不可能把它赋值给一个指定具体类型(比如Single)的数组变量,只能是“万金油”类型的Variant!

更正:Array不能赋值给固定数组,所以代码要改为:
Dim AR() '或者 Dim AR
AR = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
快乐暗恋我

2025-03-22 01:30:21

扣我:四七另六九二二三六