excel - 排序多列excel VBA
问题描述
这是我的代码
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 被高亮显示
有什么建议么?
解决方案
只是在这里重申 Jeeped 的答案,但略有不同:
1)myline
应该真正定义为 Long 或 Integer
2)声明的范围Key:=Range("A1")
应定义为相同的工作表
D
3)和的键J
在 which 之外.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
所有排序字段中添加了一行,以防万一您在此表上运行许多不同的排序器。
推荐阅读
- firefox - 如何在 Firefox 中截取屏幕质量的屏幕截图?
- php - 按钮没有被放置到 PHP 回显表中
- python - LIFX Z LAN - 快速发送数据包时灯不响应
- html - 如何使缩放CSS只是图像
- matlab - Matlab将数据保存在文件中的最佳方法
- sql - 如何通过使用“Case”语句比较多列的值来检索具有最大值的列名
- c# - Bot Framework:如何在 Kik 中的 herocard 上制作 OpenUrl 按钮
- apache - .htaccess 在现有子目录上重写/重定向回根目录
- c# - System.ArgumentException:“不存在从对象类型 System.Windows.Forms.DateTimePicker 到已知托管提供程序本机类型的映射。”
- android - 从保存的实例包中恢复比较器