VB 怎么就下标越界了

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:08:59
Option Base 1
Private Sub Form_Activate()
Dim Arr, num As Integer, inum As Integer
Arr = Array(3, 6, 5, 8, 24) '原始数据
Print "原始数据"
For i = 1 To UBound(Arr)
Print Arr(i);
Next i
num = Val(InputBox("请输入您要查找的数:"))
inum = 0 'inum记录找到数下标,未找到时为0
For i = 1 To UBound(Arr)
If Arr(i) = num Then inum = i: Exit For
Next i
Print
If inum = 0 Then
Print "查无数据"; num
Else
Print "第"; inum; "个数据是"; num
End If
For i = inum To UBound(Arr) - 1
Arr(i) = Arr(i + 1)
Next i
K= UBound(Arr)
Redim preserve arr(k-1)
Print "结果数据"
For i = 1 To UBound(Arr)
Print Arr(i);
Next i
End Sub
请问有没有解决办法?

下标越界大多是针对数组来说的。比如定义的数组的长度是10。 那么数组里就有10个元素,它们的小标分别是从0--9。 如果下标大于9了,这就叫下标越界了。
  下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。

如果输入3, 6, 5, 8, 24中的数,则程序没有问题。如果输入其它的数,则inum的值仍然为0。此时
For i = inum To UBound(Arr) - 1
Arr(i) = Arr(i + 1)
Next i
中就要用到Arr(0),也就是越界了。