急急急 vb 冒泡排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:32:41
vb MSHFlexGrid1控件 (简称MS1) 内有 A、B、C、D、E 等 5 列
当点击Option1时需要A列从大到小排列
当点击Option2时需要A列作为主要关键字从大到小排列 B列作为次要关键字从大到小排列
就像Excel里面的排序一样
俺是vb棒槌 最好有代码 越详细越好
我就是不知道排序的代码 所以啊 需要帮忙啊 我也看了很多 没有看明白
说白了 我就是不会写 会写了 我就不用发帖子了 哈哈
能不能通过第一列的排序 把每行的数值随着第一列排序的顺序改变
是这样
序号 姓名 性别 年龄
1 张三 男 20
2 李四 女 22
3 王五 男 21
按照第一列从大到小排列
序号 姓名 性别 年龄
3 王五 男 21
2 李四 女 22
1 张三 男 20
这是我需要的结果

以下代码仅作示例:
添加控件 option1,option2,msflexgrid1 复制下面代码,你先看看效果:
Private Sub Form_Load()
Dim i, j As Integer
MSFlexGrid1.Rows = 10 '初始化msflexgrid1 ,10 行 3列,其中数据区9行2列
MSFlexGrid1.Cols = 3
Randomize
For i = 1 To MSFlexGrid1.Rows - 1
For j = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.TextMatrix(i, j) = Int(Rnd * 100) '随机赋值
Next
Next
End Sub

Private Sub Option1_Click()
'排序,我忘了这种排序是不是冒泡法,总之能用
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim temp
For i = 1 To MSFlexGrid1.Rows - 1
For j = i To MSFlexGrid1.Rows - 1
If MSFlexGrid1.TextMatrix(i, 1) <= MSFlexGrid1.TextMatrix(j, 1) Then
temp = MSFlexGrid1.TextMatrix(i, 1)
MSFlexGrid1.TextMatrix(i, 1) = MSFlexGrid1.TextMatrix(j, 1)
MSFlexGrid1.TextMatrix(j, 1) = temp
For l = 2 To MSFlexGrid1.Cols - 1
temp = MSFlexGrid1.TextMatrix(i, l)
MSFlexGrid1.TextMatrix(i, l) = MSFlexGrid1.TextMatrix(j, l)