Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2864|回复: 6

[已解决]动态排序的问题

[复制链接]
发表于 2013-11-18 15:12 | 显示全部楼层 |阅读模式
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim LmaxR As Long
  3.     LmaxR = Sheet1.UsedRange.Row
  4.     With Sheet1.Range("D2:D" & LmaxR)
  5.         .CurrentRegion.Sort key1:=Range("D1"), order1:=xlDescending, Header:=xlYes
  6.         .Value = .Value
  7.         .Parent.[D1] = "价格"
  8.     End With
  9.     End Sub
复制代码

排序

排序
                      QQ截图20131118150445.png 动态排序.rar (12.19 KB, 下载次数: 13)
发表于 2013-11-18 15:18 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LmaxR As Long
    LmaxR = Sheet1.UsedRange.Row
    With Sheet1.Range("D2:D" & LmaxR)
        .CurrentRegion.Sort key1:=Range("B1"), order1:=xlAscending, _
                            key2:=Range("D1"), order2:=xlDescending,
_
                            Header:=xlYes
        .Value = .Value
        .Parent.[D1] = "价格"
    End With
End Sub

评分

参与人数 1 +1 收起 理由
zozoss + 1 感谢版主大大

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-11-18 16:09 | 显示全部楼层
爱疯 发表于 2013-11-18 15:18
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LmaxR As Long
    LmaxR = She ...

版主,我把代码输入后,保存成xlsm,然后再打开,发现只能在数据的下一行增加新数据才会自动排序,太远了就不会了。
QQ截图20131118160429.png
如图,我隔了一行输入新数据并不会自动排序,问题出在哪里啊?
如果此时我在12行补入数据,13行也会正常的动态排序。

回复

使用道具 举报

发表于 2013-11-18 16:34 | 显示全部楼层
把CurrentRegion改成UsedRange就可以了。

评分

参与人数 1 +1 收起 理由
zozoss + 1 那样的话,会直接弹出错误窗口

查看全部评分

回复

使用道具 举报

发表于 2013-11-18 16:46 | 显示全部楼层    本楼为最佳答案   
zozoss 发表于 2013-11-18 16:09
版主,我把代码输入后,保存成xlsm,然后再打开,发现只能在数据的下一行增加新数据才会自动排序,太远了 ...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LmaxR As Long
    LmaxR = Sheet1.Range("A65536").End(xlUp).Row
    With Sheet1.Range("A2:E" & LmaxR)
        .Sort key1:=Range("B1"), order1:=xlAscending, _
              key2:=Range("D1"), order2:=xlDescending, _
              Header:=xlYes
        .Value = .Value
        .Parent.[D1] = "价格"
    End With
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-11-18 17:14 | 显示全部楼层
爱疯 发表于 2013-11-18 16:46
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LmaxR As Long
    LmaxR = S ...

功能实现了,隔了几行都没问题,但是出现新的情况了
QQ截图20131118170935.png
排序后第一行不变,应该说第一行(铅笔)不会加入排序。

回复

使用道具 举报

发表于 2013-11-19 08:58 | 显示全部楼层
zozoss 发表于 2013-11-18 17:14
功能实现了,隔了几行都没问题,但是出现新的情况了

排序后第一行不变,应该说第一行(铅笔)不会加入 ...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LmaxR As Long
    LmaxR = Sheet1.Range("A65536").End(xlUp).Row
    With Sheet1.Range("A1:E" & LmaxR)
        .Sort key1:=Range("B1"), order1:=xlAscending, _
              key2:=Range("D1"), order2:=xlDescending, _
              Header:=xlYes
        .Value = .Value
        .Parent.[D1] = "价格"
    End With
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 09:00 , Processed in 0.595189 second(s), 19 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表