|
用控件工具箱中的“按钮”工具画一个命令按钮,将其“Caption” 属性值改为“均分排序”,双击该按钮,在其Click事件中输入如下代码:
Private Sub CommandButton1_Click()
Dim myarray()
Dim m, n, i, j As Integer
n = Application.WorksheetFunction.CountA(Columns(1))
'从第二列到第八列一共循环七次
For m = 2 To 8
'给数组赋值
ReDim myarray(n)
For i = 3 To n
myarray(i) = Cells(i, m).Value
Next i
'用冒泡排序法对数组中的元素进行排序操作
For j = 0 To n - 1
For i = 0 To n - 1 - j
If myarray(i) 〈 myarray(i + 1) Then
temp = myarray(i)
myarray(i) = myarray(i + 1)
myarray(i + 1) = temp
End If
Next
Next
'将各数值在列中的排名加括号后添加到原单元格的数值后面,中间空一个空格
For i = 3 To n
Cells(i, m).Value = Cells(i, m).Value && Space(1) && '(' && Application.WorksheetFunction.Match(Cells(i, m), myarray, -1) && ')'
Next i
Next m
'主体程序执行完毕
'使各列的宽度与单元格的大小相适应
Cells.Select
Selection.Columns.AutoFit
'禁止该按钮功能(防止被再次点击)
CommandButton1.Enabled = False
MsgBox '排序完成,该操作只能执行一次!', vbOKOnly, '提示框'
End Sub
关闭代码窗口返回到Excel工作表中,在运行模式下单击〔均分排序〕按钮,我们就会看到,各班各学科均分在年级中的名次已自动添加到相应的单元格中了(如图2)。
添加名次后,程序已设定了自动扩充单元格的大小以适应单元格中的内容。另外,为了防止用户多次点击〔均分排序〕按钮,该按钮在程序执行完后即被设为无效,若要再次修改本程序,只需将该按钮的“Enabled”属性值设为“True”就可以了。 |
|