VB高手请指点:学生姓名和成绩数据若干,按成绩从高到低降序排序

有学生姓名和成绩数据若干,如“
王小二:56;刘小二:34;李三立:67;马小虎:87;陈二毛:98;罗四光:66;吴天二:39;张三四:77;卢一炮:60;魏四口:55;王小三:59;刘大二:54;李三包:27;马一虎:47;陈小毛:56;罗一光:49;吴一二:33;张三一:42;卢大炮:40;魏二口:61;”
这些数据在text1中,数据还有很多,这只是其中一部分。要求单击command1,将学生姓名和成绩按成绩从高到低逐行输出到text2中。

才写到:a(i) = Split(Split(Text1.Text, ";")(i), ":")(0)
就提示下标越界,不知如何输出逐个指定学生姓名和成绩才好
请VB高手指点,如能提供全部功能源码,给50分。

第1个回答  2013-03-30
Private Sub Command1_Click()
Dim sTxt$, sDt, Dt(), tTxt$

'----------数据读取---------------
sTxt = Text1.Text
sDt = Split(sTxt, ";")
ReDim Dt(UBound(sDt))
For i = 0 To UBound(sDt)
Dt(i) = Split(sDt(i), ":")
If UBound(Dt(i)) <> 1 Then Exit For
Next i
ReDim Preserve Dt(i - 1)

'--------------排序------------
For i = 1 To UBound(Dt)
k = i
Do
If Val(Dt(k)(1)) > Val(Dt(k - 1)(1)) Then
tmp = Dt(k)
Dt(k) = Dt(k - 1)
Dt(k - 1) = tmp
Else
Exit Do
End If
k = k - 1
Loop Until k < 1
Next i

'-----------------输出----------------
For i = 0 To UBound(Dt)
tTxt = tTxt & (i + 1) & " - " & Dt(i)(0) & ":" & Dt(i)(1) & vbCrLf
Next i
Text2.Text = tTxt

End Sub本回答被提问者采纳
相似回答
大家正在搜