EXCEL VBA学习例子之【升降序】

Private  Sub  Worksheet_SelectionChange( ByVal  Target  As  Range)  '当发生选择变化事件——(鼠标单击或移动<a href="https://www.baidu.com/s?wd=%E6%96%B9%E5%90%91%E9%94%AE&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWPHu9mWPWPhDkPWDLnjKh0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHc1rHDYnjDLPWR4PHDdrHT1rf" target="_blank" class="baidu-highlight">方向键</a>以致不同的单元格获得焦点)
Application.ScreenUpdating =  False   '禁止闪屏
Application.EnableEvents =  False  '禁止事件发生。此行多余!
If  Target.Column < 101  And  Target.Row = 1  Then   '若被选中的单元格在第1行,且在第1~100列,则
     r = Cells(Rows.Count, 1). End (3).Row  '获取A列最后一个非空单元格行号
     If  InStr(Cells(Target.Row, Target.Column),  "▲" ) > 0  Then   '如果在选中目标中发现字符▲,则  另,此句可写作 if instr(target,"▲") then更简洁
         Range(Cells(1, 1), Cells(r, 100)). Select  '选中1行1列单元格至100列r行单元格这个区域
         ActiveWorkbook.Worksheets( "Sheet1" ).Sort.SortFields.Clear  '清除Sheet1的排序关键字
         ActiveWorkbook.Worksheets( "Sheet1" ).Sort.SortFields.Add Key:=Range(Cells(2, Target.Column), Cells(r, Target.Column)), _
             SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal   'xlDescending 降序 设定排序参数
         With  ActiveWorkbook.Worksheets( "Sheet1" ).Sort   '排序
             .SetRange Range(Cells(1, 1), Cells(r, 100))  '设定区域
             .Header = xlYes  '有表头
             .MatchCase =  False  '不区分大小写
             .Orientation = xlTopToBottom  '行方向优先
             .SortMethod = xlPinYin  '拼音
             .Apply
         End  With
         Cells(Target.Row, Target.Column) = Replace(Cells(Target.Row, Target.Column),  "▲" "▼" '将选中目标的▲替换成▼
         Cells(2, Target.Column). Select  '选中当前单元格下方(第二行)的单元格。此句可用target.offset(1,0).select代替
    Else
         Range(Cells(1, 1), Cells(r, 100)). Select
         ActiveWorkbook.Worksheets( "Sheet1" ).Sort.SortFields.Clear
         ActiveWorkbook.Worksheets( "Sheet1" ).Sort.SortFields.Add Key:=Range(Cells(2, Target.Column), Cells(r, Target.Column)), _
             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal     'xlAscending 升序
         With  ActiveWorkbook.Worksheets( "Sheet1" ).Sort
             .SetRange Range(Cells(1, 1), Cells(r, 100))
             .Header = xlYes
             .MatchCase =  False
             .Orientation = xlTopToBottom
             .SortMethod = xlPinYin
             .Apply
         End  With
         Cells(Target.Row, Target.Column) = Replace(Cells(Target.Row, Target.Column),  "▼" "▲" )
         Cells(2, Target.Column). Select
    End  If
End  If
Application.EnableEvents =  True
Application.ScreenUpdating =  True
End  Sub
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值