ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Sort Macro Compatibility (https://www.excelbanter.com/excel-programming/434535-sort-macro-compatibility.html)

dan

Sort Macro Compatibility
 
Can someone help me understand why this macro works in Excel 2007 but not on
Excel 2003?

Sub Sort_Donors()
'
' Sort_Donors Macro
'
' Keyboard Shortcut: Ctrl+Shift+S
'
Application.Goto Reference:="NameList"
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Add
Key:=ActiveCell. _
Range("A1:A100"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Donor List").Sort
.SetRange ActiveCell.Offset(-1, 0).Range("A1:A101")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub


Dave Peterson

Sort Macro Compatibility
 
The syntax for sorting has changed from xl2003 to xl2007 (when you recorded your
macro).

But the good thing is that both versions still will work with the old syntax.

With worksheets("Donor List")
with .range("NameList")
.cells.sort key1:=.columns(1), order1:=xlAscending, header:=xlNo
end with
end with

It looks like you're including the header and then resizing the range (including
that header). The code I suggested just ignores that header row and says that
the range doesn't haven't headers.





Dan wrote:

Can someone help me understand why this macro works in Excel 2007 but not on
Excel 2003?

Sub Sort_Donors()
'
' Sort_Donors Macro
'
' Keyboard Shortcut: Ctrl+Shift+S
'
Application.Goto Reference:="NameList"
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Add
Key:=ActiveCell. _
Range("A1:A100"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Donor List").Sort
.SetRange ActiveCell.Offset(-1, 0).Range("A1:A101")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub


--

Dave Peterson

dan

Sort Macro Compatibility
 
Thank you very much Dave. I thought it might be something as easy as that.

"Dave Peterson" wrote:

The syntax for sorting has changed from xl2003 to xl2007 (when you recorded your
macro).

But the good thing is that both versions still will work with the old syntax.

With worksheets("Donor List")
with .range("NameList")
.cells.sort key1:=.columns(1), order1:=xlAscending, header:=xlNo
end with
end with

It looks like you're including the header and then resizing the range (including
that header). The code I suggested just ignores that header row and says that
the range doesn't haven't headers.





Dan wrote:

Can someone help me understand why this macro works in Excel 2007 but not on
Excel 2003?

Sub Sort_Donors()
'
' Sort_Donors Macro
'
' Keyboard Shortcut: Ctrl+Shift+S
'
Application.Goto Reference:="NameList"
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Add
Key:=ActiveCell. _
Range("A1:A100"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Donor List").Sort
.SetRange ActiveCell.Offset(-1, 0).Range("A1:A101")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub


--

Dave Peterson


dan

Sort Macro Compatibility
 
Thank you Dave. I thought it might be something simple like that. Thanks so
much for the quick reply.

"Dave Peterson" wrote:

The syntax for sorting has changed from xl2003 to xl2007 (when you recorded your
macro).

But the good thing is that both versions still will work with the old syntax.

With worksheets("Donor List")
with .range("NameList")
.cells.sort key1:=.columns(1), order1:=xlAscending, header:=xlNo
end with
end with

It looks like you're including the header and then resizing the range (including
that header). The code I suggested just ignores that header row and says that
the range doesn't haven't headers.





Dan wrote:

Can someone help me understand why this macro works in Excel 2007 but not on
Excel 2003?

Sub Sort_Donors()
'
' Sort_Donors Macro
'
' Keyboard Shortcut: Ctrl+Shift+S
'
Application.Goto Reference:="NameList"
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Donor List").Sort.SortFields.Add
Key:=ActiveCell. _
Range("A1:A100"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Donor List").Sort
.SetRange ActiveCell.Offset(-1, 0).Range("A1:A101")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub


--

Dave Peterson



All times are GMT +1. The time now is 06:25 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com