热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

排序多列excelVBA

如何解决《排序多列excelVBA》经验,为你挑选了1个好方法。

这是我的代码

Sub SortMultipleColumns(myline As String)

    With Worksheets("Result-Inactive").Sort
        .SortFields.Add Key:=Range("A1"), Order:=xlAscending
        .SortFields.Add Key:=Range("D1"), Order:=xlAscending
        .SortFields.Add Key:=Range("J1"), Order:=xlAscending
        .SetRange Range("A1:C" & myline)
        .Header = xlYes
        .Apply
    End With

End Sub

我收到以下错误,我也没明白,为什么“运行时错误'1004'排序引用无效。请确保它在您要排序的日期内,然后首先按框排序不相同或为空白。我点击调试,.apply被高亮显示

有什么建议么?



1> jamheadart..:

只是在这里重申吉普车的答案,但略有不同:

1)myline实际上应该定义为Long或Integer

2)声明的范围Key:=Range("A1")应定义为同一工作表

3)同样,的DJ之外的键也.setRange应定义为在同一工作表上

我坚持使用相同的代码,但将ws工作表定义添加到所有范围,并更改了设置范围以包括最多列J

Sub SortMultipleColumns(myline As Long)

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Result-Inactive")

    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=ws.Range("A1"), Order:=xlAscending
        .SortFields.Add Key:=ws.Range("D1"), Order:=xlAscending
        .SortFields.Add Key:=ws.Range("J1"), Order:=xlAscending
        .SetRange ws.Range("A1:J" & myline)
        .Header = xlYes
        .Apply
    End With

End Sub

我假设myline存在,因为有时您只想对一系列数据的最顶层进行排序。我还向clear所有排序字段添加了一行,以防万一您在此工作表上运行许多不同的排序器。


推荐阅读
author-avatar
鹏城飞将
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有