要VB中排序:(由小到大)
有四个TEXTBOX控件,是一个控件数组。分别往里边输入:2 5 23 50
dim i as integer
dim j as integer
Private Sub Command2_Click()
For i = 0 To 3
imin = i
For j = i + 1 To 3
If Text1(j).Text < Text1(imin).Text Then imin = j
Next j
t = Text1(i).Text
Text1(i).Text = Text1(imin).Text
Text1(imin).Text = t
Next iEnd Sub
运行之后为什么结果会是:2 23 5 50????请高手告知!!!!!!!

解决方案 »

  1.   

    Dim i As Integer
    Dim j As Integer
    Private Sub Command1_Click()
    For i = 0 To 3
        imin = i
        For j = imin + 1 To 3
            If Val(Text1(j).Text) < Val(Text1(imin).Text) Then
                t = Text1(j).Text
                Text1(j).Text = Text1(imin).Text
                Text1(imin).Text = t
            End If
        Next j
    Next iEnd Sub
      

  2.   

    为何IF 后面的TEXT1(j).TEXT要加VAL,而其他的不用?
      

  3.   

    因为文本的比较和数字的比较不一样
    字符串 "23">"5"  
    数字: 5>23你要做的是数字比较, 所以要取得数值 要用VAL来取数值
      

  4.   

    哦,明白!!!!!
    还可以再请教吗?
    如果每个TEXTBOX对应一个LABEL,就像一个学生对应一个学号一样,
    当学生的成绩排序后,他的学号当然不会变
    我要把成绩排序,又该如何?
    TEXTBOX中的数字就是学生的成绩,而LABEL里的数字就是他的学号。
    TEXTBOX中的数字已经排序了,就是要LABEL也一一对应。
    万分感谢!
      

  5.   

    你照样排4个LABEL在TEXTBOX下,Dim i As Integer
    Dim j As Integer
    Private Sub Command1_Click()
    For i = 0 To 3
        imin = i
        For j = imin + 1 To 3
            If Val(Text1(j).Text) < Val(Text1(imin).Text) Then
                t = Text1(j).Text
                Text1(j).Text = Text1(imin).Text
                Text1(imin).Text = t
                t = LABEL1(j).Caption
                LABEL1(j).Caption  = LABEL1(imin).Caption
                LABEL1(imin).Caption = t
            End If
        Next j
    Next iEnd Sub
    其实这个问题应该数据库来解决:)
      

  6.   


    同样的用数组控件,用Index做对应
      

  7.   

    程序我没测过,不过我感觉有问题啊,你看当i=3时,运行For j=i+1 to 3时,j不就是4了吗?那Text(4).Text不就超出控件数组界限了吗?Text(j)只能是0-3啊!
      

  8.   

    你看当i=3时,运行For j=i+1 to 3时,j不就是4了j=4 就不执行循环了, 没什么问题呀