怎样利用宏(VBA)设置一个按钮,点击该按钮实现学生成绩表中某列(比如“合计”)自动按降序排序?高手进
还有按学生姓名笔画由少到多的按钮的宏呢?要求:1、变化要扩展到其他列,即其他列的数据要跟随该列一起移动2、学生人数不是固定的,即当人数增减时按钮的宏一样适用我自己用录制宏...
还有按学生姓名笔画由少到多的按钮的宏呢?
要求:1、变化要扩展到其他列,即其他列的数据要跟随该列一起移动
2、学生人数不是固定的,即当人数增减时按钮的宏一样适用
我自己用录制宏的方式设置的宏按钮:
升序按钮:
Private Sub CommandButton2_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
降序按钮:
Private Sub CommandButton1_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
按姓名笔画(递增)按钮:
Private Sub CommandButton3_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke, DataOption1:=xlSortNormal
End Sub
但一旦学生人数发生增减,这3个按钮仍然只能对原先的人数范围起作用。怎么才能让宏自动适用于学生的增减呀?请高手指教!
补充:在成绩(比如“合计”)的下面有很多统计数据(如“总分”、“平均分”“优生率”等等)不能参与那一列的排序(最上面的两行表头标题当然也不能参与排序) 展开
要求:1、变化要扩展到其他列,即其他列的数据要跟随该列一起移动
2、学生人数不是固定的,即当人数增减时按钮的宏一样适用
我自己用录制宏的方式设置的宏按钮:
升序按钮:
Private Sub CommandButton2_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
降序按钮:
Private Sub CommandButton1_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
按姓名笔画(递增)按钮:
Private Sub CommandButton3_Click()
Range("A2:E6").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke, DataOption1:=xlSortNormal
End Sub
但一旦学生人数发生增减,这3个按钮仍然只能对原先的人数范围起作用。怎么才能让宏自动适用于学生的增减呀?请高手指教!
补充:在成绩(比如“合计”)的下面有很多统计数据(如“总分”、“平均分”“优生率”等等)不能参与那一列的排序(最上面的两行表头标题当然也不能参与排序) 展开
1个回答
展开全部
Range("A2:E6").Select修改为
range("A2").resize(range("A65536").end(3).row() , 5).select
试试
range("A2").resize(range("A65536").end(3).row() , 5).select
试试
追问
你好,你的方法我试了下,若成绩的下面没有统计数据很好用,但:在成绩(比如“合计”)的下面有很多统计数据(如“总分”、“平均分”“优生率”等等)不能参与那一列的排序,这有方法能解决吗?
追答
统计数据占了几行?
比如你原代码是A2:E6
那统计数据是占的第几行?
7 8 9三行?
那上面的代码修改为
range("A2").resize(range("A65536").end(3).row() -3, 5).select
即,有几行统计数据,就减几。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |