我创建了一个宏来对客户名称列表进行排序,但是正如您在下面看到的那样,它会对现在从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
答案 0 :(得分: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
答案 1 :(得分:0)
尝试Range("A1", Range("A1").End(xlDown))
这应该选择以A1开头的所有非空行。