在VBAsorting中设置范围

我正在尝试在Excel VBA中对数据进行sorting。 我的表可能有一个可变数量的数据,所以我使用Range.End方法来查找工作表的最后一行/列。 虽然,当我尝试设置sorting的范围它给了我一个对象所需的错误,我不知道为什么。 我在下面粘贴了我的代码。 任何帮助将不胜感激。

 With Sheet9.Sort .SetRange (Sheet9.Range("A1").CurrentRegion) .SortFields.Clear .SortFields.Add Key:=rng2, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

根据评论编辑:

我将下面的代码input到我创build的模拟电子表格中,它似乎工作正常。 评论: Sort Reference is not valid描述的错误Sort Reference is not valid表示在定义密钥时可能存在问题。 尝试使用我的代码(取代必要的信息),让我知道它是否工作。

 Sub Doit() Set rng2 = Sheet1.Range("A1:A5") With Sheet1.Sort .SortFields.Clear .SortFields.Add Key:=rng2, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Sheet1.Range("A1").CurrentRegion .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub 

基于能够使用.End为行和列,我假设你有一个连续的数据集。 如果是这样,而不是复杂的事情,只需使用:

Range("A1").CurrentRegion来设置你的范围对象。

这识别了围绕Range("A1")构build的整个数据集