【发布时间】:2018-09-01 05:32:34
【问题描述】:
关于 SO 的第一篇文章,并且几乎不会认为自己是编码员,所以这可能很容易......我一直在努力使用这段代码,tt 似乎适用于除 F 之外的所有列,其中填充了日期格式为 mm/dd/yyyy。当代码到达带有日期的 F 列时,代码不会完全执行。
为了获取此代码,我使用了 excel 宏记录器并对范围进行了个性化设置。
Sub Sorting()
'
' Sorting Macro
'
'
Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Clear
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Add Key:=Range( _
"A5:A" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Add Key:=Range( _
"B5:B" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Add Key:=Range( _
"C5:C" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Add Key:=Range( _
"I5:I" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Ambulatory Care").Sort.SortFields.Add Key:=Range( _
"F5:F & lastrow"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Ambulatory Care").Sort
.SetRange Range("A4:J798")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A4").Select
End Sub
【问题讨论】:
-
...与您已经完成的相同:
.SetRange Range("A4:J" & lastrow)。作为一个额外的学习点,这个网站上有一些帖子可以帮助你在 VBA 中不使用.Select和ActiveWorkbook或.Activate这些最终会让你绊倒!