Dim gap As Integer    '增量设置为初始值
Dim Array1() As String
Dim i As Integer, j As Integer
Dim temp As Double
Dim length As Integer
length = Len(Text1.Text)
ReDim Array1(length)
Array1() = Split(Text1.Text, ",")
Dim First As Double, Last As Double    First = LBound(Array1())
    Last = UBound(Array1())
  gap = length / 2  '设置增量为length/2
Do While gap > 0
   For i = gap + 1 To length
       j = i - gap
       Do While j > 0
          If Val(Array1(j)) > Val(Array1(j + gap)) Then
              temp = Array1(j)
              Array1(j) = Array1(j + gap)
              Array1(j + gap) = temp
              j = j - gap
           Else: j = 0
           End If
        Loop
    Next i
    gap = gap / 2
loop

解决方案 »

  1.   

    ps:在上面程序中提示
    If Val(Array1(j)) > Val(Array1(j + gap)) Then
    下标越界,但是我得已经是ReDim Array1(length)了,为什么还会越界呢?
      

  2.   


    那个Array1() = Split(Text1.Text, ",")那里有问题
      

  3.   

    ReDim Array1(length)
    Array1() = Split(Text1.Text, ",")
    ====================================================
    Array1() = Split(Text1.Text, ",")这句话让“ReDim Array1(length)”做无用功了
    Array1的数组大小取决于Text1.Text的内容