0

我创建了一个宏来对客户名称列表进行排序,它可以工作,但是正如您在下面看到的,它对现在从 A2 到 A47 的列表进行排序。我担心当列表的大小增加或收缩时,我的宏将无法正常工作。我该如何调整它,以便我的排序宏在 A 列下的任何列表中工作。谢谢。

Sub ByCustomerName()
'
' ByCustomerName Macro
' Sorts by Customer Name
'

'
    ActiveWorkbook.Worksheets("My Customers").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("My Customers").Sort.SortFields.Add Key:=Range( _
    "A2:A47"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

    With ActiveWorkbook.Worksheets("My Customers").Sort
        .SetRange Range("A1:B47")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
4

2 回答 2

0

你只需要设置你的范围而不是硬编码它\

改变.SetRange Range("A1:B47")


在代码顶部尝试

Dim sortRange As Range
Dim lastRow As Long
Dim ws As Worksheet

Set ws = Sheet1

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Set sortRange = Range("A1:B" & lastRow)

然后.SetRange sortRange

于 2013-11-04T22:05:52.083 回答
0

尝试Range("A1", Range("A1").End(xlDown))

这应该选择所有以 A1 开头的非空行。

于 2013-11-04T22:08:51.770 回答