在Excel中排序宏

时间:2014-09-30 15:10:13

标签: excel-vba vba excel

我正在尝试使用此代码对excel中的电子表格进行排序,但我不确定如何在.SetRange属性中放置预定义范围。我希望使用上面设置的rng1Row变量。任何帮助将不胜感激。

N = Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = wb1.Sheets("SourceData").Cells.Range("A2:A" & N)
Set rng1Row = rng1.EntireRow

wb1.Worksheets("SourceData").Sort.SortFields.Clear
wb1.Worksheets("SourceData").Sort.SortFields.Add Key:=wb1.Sheets("SourceData").Cells.Range("A2:A" & N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With wb1.Worksheets("SourceData").Sort
    .SetRange
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

1 个答案:

答案 0 :(得分:0)

Here is the documentation表达.SetRange(Rng)

SetRange Range(rng1Row)(假设rng1Row是一个范围)

但是,让我们看一下代码的第一部分 -

N = Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = wb1.Sheets("SourceData").Cells.Range("A2:A" & N)
Set rng1Row = rng1.EntireRow

您正在尝试获取列的行。 rng1Row = (Range("A:A").EntireRow)。这不是对该财产的有效使用。