下标越界了   i,j 都是int      For i = 2 To 8
                temp.Caption = lbl(2, i).Caption
        
     j = i - 1
     While temp.Caption < lbl(2, j).Caption   //下标越界
     lbl(2, j + 1).Caption = lbl(2, j).Caption
     j = j - 1
          Wend
      lbl(2, j + 1).Caption = temp.Caption
         Next i
      另:模块 为Public a(8) As Integer
Public lbl(1 To 2, 1 To 8) As Label
Public s As Double
Public pause1 As Boolean

解决方案 »

  1.   

    While temp.Caption < lbl(2, j).Caption and j>0
      

  2.   

    1楼说的有道理,你那递减的j = j - 1造成的j值可能越界,但并没看到检查这个值范围的代码
      

  3.   

      i=2
      j = i - 1 'j=1
      While temp.Caption < lbl(2, j).Caption '从上面下来时,j=1;循环上来时,j=0,下标越界
                                                                       '因为lbl(1 To 2, 1 To 8) As Label
      lbl(2, j + 1).Caption = lbl(2, j).Caption
      j = j - 1'j=0
      Wend
      

  4.   

      j = i - 1
      While temp.Caption < lbl(2, j).Caption //下标越界
      lbl(2, j + 1).Caption = lbl(2, j).Caption
      j = j - 1
      Wendi=2的时候j=i-1=1, 然后j=j-1=0, 再循环到lbl(2, j)的时候, 你说越界不越界?
      

  5.   

      For i = 2 To 8
      temp.Caption = lbl(2, i).Caption
       
      j = i - 1
      Do While temp.Caption < lbl(2, j).Caption '//下标越界
      lbl(2, j + 1).Caption = lbl(2, j).Caption
      j = j - 1
      If j < 1 Then Exit Do
      Loop
      lbl(2, j + 1).Caption = temp.Caption
      Next i
      

  6.   

    分析了一下楼主的代码逻辑,楼主试下:
    For i = 2 To 8
      temp.Caption = lbl(2, i).Caption
      j = i - 1
      Do While (i > 0)
        If (temp.Caption < lbl(2, j).Caption) Then
          lbl(2, j + 1).Caption = lbl(2, j).Caption
        Else
          Exit Do
        End If
        j = j - 1
      Wend
      lbl(2, j + 1).Caption = temp.Caption
    Next i
      

  7.   

    编译错误。。wend 没有 while 
      

  8.   

    忘了把那个 Wend 改成 Loop ..........