设置范围 VBA 排序

Set range in VBA sort

我正在尝试对 Excel VBA 中的数据进行排序。我的 sheet 可能有可变数量的数据,因此我使用 Range.End 方法查找 sheet 的最后一行/最后一列。但是,当我尝试设置排序范围时,它会给我一个 Object Required 错误,我不确定为什么。我在下面粘贴了我的代码。任何帮助将不胜感激。

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

根据评论编辑:

我将以下代码输入到我创建的模拟电子表格中,它似乎工作正常。评论中描述的错误: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")

构建的整个数据集