EXCEL VBA在填充数据后进行sorting

我是新来的VBA和Excelmacros,但不是基本的编程。 我有几十个excel文件,我正在从中清除数据,并将其填充到一个文件中。 数据填充后,我想根据列A进行sorting。在玩了2个小时之后,我刚刚录制了一个macros,并将其剪切并粘贴到我的ButtonCall子项中。 但我想知道为什么它的工作,为什么我在这里find的解决scheme和在线不会为我工作…

为什么这个简单的代码不工作:

Set q = ThisWorkbook.Worksheets(2) LastRow = q.UsedRange.rows.Count 'q.UsedRange.Row ' - 1 + q.UsedRange.rows.Count LastCol = q.UsedRange.Columns.Count q.Range("A6:AAA" & LastRow).Sort Key:=q.Columns("A"), Order:=xlDescending 

虽然这个修改后的loggingmacros呢?

 Set q = ThisWorkbook.Worksheets(2) LastRow = q.UsedRange.rows.Count 'q.UsedRange.Row ' - 1 + q.UsedRange.rows.Count LastCol = q.UsedRange.Columns.Count q.Sort.SortFields.Clear q.Sort.SortFields.Add Key:=Range("A6:A" & LastRow), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With q.Sort .SetRange Range("A6:AAA" & LastRow) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

有什么想法吗? 谢谢。

你的代码是使用range.sort 方法 ,而原始代码是使用sorting对象 – 两个不同的东西。

这段代码将使用Range.Sort方法将“A6”sorting到列A的数据结尾。

 Sub MySort() Dim q As Worksheet Dim r As Range Set q = ThisWorkbook.Worksheets(2) ' specify data range from "A6" to end of data Set r = q.Range("A6", q.Cells.SpecialCells(xlCellTypeLastCell)) ' Header:=xlNo assumes A6 row is included in data to be sorted r.Sort key1:=r(1, 1), Order1:=xlDescending, Header:=xlNo End Sub