-
dim a(20) 你不声明它是什么类型,VB 默认为 variant type,从 0 到 20 有 21 个元素,而不是 0 到 19,这与其他语言不同,上标是 20。
在下一个 k 之后,k 加 1。
for k = 1 to 19
a(k) = k ^ 2
当下一个 k'k 为 20 时退出循环。
打印 A(K),其中 k 的值为 20,但 a(20) 未初始化或赋值,估计为 0
然后:对于 k = 1 到 20
a(k) = k ^ 2
next k
打印 a(k) 此时,k 为 21,明显超过了 a 20 的上限,说它越界自然是错误的。 K-1,当然不会有问题。
-
option base 1
private sub form_click()dim a(20)
for k = 1 to 19
a(k) = k ^ 2
next k
print a(k)
end sub
输出是什么?
输出为 a(19),即 19*19
option base 1
private sub form_click()dim a(20)
for k = 1 to 20
a(k) = k ^ 2
next k
print a(k)
end sub
输出是什么?
这是一个问题,顶部是我的问题。 我尝试了 VB,但不知道为什么。
您的定义数组是 a(20)。
默认值是 a(0)-a(19) 的 20 个数组,a(20) 当然是越界的。
-
数组元素和集合成员只能在定义的范围内访问。 下标可能大于或小于下标范围,或者应用程序这一侧的数组可能没有指定的范围。 检查数组的声明以确认其上限和下限。
如果使用的是重新作用域的数组,则应使用 ubound 和 lbound 函数来确定数组访问。 如果将索引指定为变量,则应检查变量名称的拼写。
以一个简单的一维数组为例:int a[10]; 这是一个整数数组 a,有 10 个元素:a[0]-a[9],因为正确的下标应该从 0 开始,以 9 结尾,这与习惯上的 1-10 不同,所以会产生 a[10] 错误,即数组下标越界。
-
它是越界的数组,它使用了一个不存在的数组下标,也就是说,如果你定义了 a(9),那么你最多只能使用 0 到 9 的 10 个数字作为 a(?)您可以在程序中判断您使用的下标是否大于定义的数字,例如 a(i) if i>ubound(a) then msgbox"如果 i 的值大于数组 a 的定义,请检查"
-
这意味着你所引用的数组超出了你定义的数组的范围,比如你定义了 a[10][10],你最多只能使用 a[9][9],如果使用 a[9][10],就会出现“下标越界”,因为数组的下标从 0 开始, 而下标从1开始定义,如果还是不明白,可以去本书看看。
-
只是不能继续操作,直接回车键加ken抽水就可以回,直接出界**。
-
您的图表超出了可用于绘图的边界。
-
下标越界是什么意思? 我真的不知道这意味着什么,这到底是什么。
-
VB 中的实时错误意味着什么,不要犯同样的错误。
-
dim arr() as byte 语句只是一个类型声明,它并没有声明 arr 数组中的元素数,所以它实际上并没有打开数组存储空间,以后用的时候也没有办法写入数组。
这就是错误的本质。 知道错误是如何犯的,这很容易做到。 因为最初我们不知道这个数组有多少个元素,即元素的数量是动态的,取决于温度的长度,所以我们只能动态地声明它。
因此,我们需要在使用 arr 数组元素之前使用 redim 语句声明它的作用域。 我们可以看到程序中的 n 是数组元素 -1 的元素数,我们的数组下标从 0 开始,最大下标正好是 n,所以在计算出 n 之后,我们可以在回收之前使用 redim 重新声明它。
也就是说:只需在 n = len(temp) 2 - 1 语句和 for i = 0 到 n 语句之间插入一行 redim arr(n)。
通常,在引用工作簿或工作表时,最好直接引用名称,有时必须先激活工作簿或工作表,然后才能使用某些属性或方法(但不是全部)! 否则,很容易犯像问题这样的错误。
答案补充道:兄弟,你在前面定义了nfilenun,后来用的时候写成nfilenum,用的时候发现了问题吧? 最后一个字母是不一样的。 >>>More