有关VB下标越界的问题(头都大了)

来源:百度知道 编辑:UC知道 时间:2024/09/19 15:57:16
Private Sub Form_click()
Dim a(6) As Integer, i As Integer
For i = 1 To 6
a(i) = InputBox("请输入数值")
Next i
For Each c In a()
Call he(a)
Next c
End Sub

Private Sub he(x() As Integer)
For i = 1 To 6
For j = i To 5
If x(i) < x(j + i) Then
t = x(i)
x(i) = x(j + 1)
x(j + 1) = t
End If
Next j
Next i
End Sub
提示说下标越界,但是就是不知道为什么。各位大大看看啊。

不要乱说。。。

dim a(6), 在默认情况下 a(0)到a(6)都可用,也就是说是一个7元数组

LZ的问题出在这里:

For i = 1 To 6
For j = i To 5
If x(i) < x(j + i) Then '<-这行

x也就是你传入的a,最大下标只有6

可是你想,当i循环到2的时候,j循环到5的时候,i+j等于7 大于6了,所以下标越界

LZ最好说明你的这个程序的目的,是排序吗?如果是排序的话,还存在其它的错误

毛病出在这句,在Private Sub he(x() As Integer) 里面
If x(i) < x(j + i) Then

j+i肯定会大于你给定的6
所以越界了,因为没有a(7),a(8)...,a(11)

a(6)的话,只有a(0)-a(5)是可以访问的。

a(6)的话,是定一个6元数组么……额……难道VB和C不一样?请各位无视好了。