Sort Columns using lastrow

J

Johnny

Hi all, this is a snippet of VBA code that I recorded and added some
"lastrow" information into (line numbers added for the sake of my
question):

1 Dim lastrow As Integer
2 lastrow = Cells(Rows.Count, 1).End(xlUp).Row
3 Worksheets("Working Folder").Range("A1:" & "S" & lastrow).Select

4 ActiveWorkbook.Worksheets("Working Folder").Sort.SortFields.Clear
5 ActiveWorkbook.Worksheets("Working Folder").Sort.SortFields.Add
Key:=Range( _
""N:" & "N" & lastrow"), SortOn:=xlSortOnValues,
Order:=xlAscending, DataOption:= _
xlSortNormal
6 With ActiveWorkbook.Worksheets("Working Folder").Sort
7 .SetRange Range("A1:" & "S" & lastrow)
8 .Header = xlYes
9 .MatchCase = False
10 .Orientation = xlTopToBottom
11 .SortMethod = xlPinYin
12 .Apply
13 End With

I'm getting the compiler error: expected: list separator or ")". It is
failing in the section: ""N:" & "N" & lastrow

What I'm trying to accomplish is select A1 down to S(lastrow) and sort
by column N1:N(Lastrow). Hopefully I'm just missing a parenthesis or
another set of quotes? Thanks for assistance.
 
J

JLGWhiz

Key:=Range( _
""N:" & "N" & lastrow"), SortOn:=xlSortOnValues,

Change to:

Key:=Range("N1"), SortOn:=xlSortOnValues,

Sort Key requires only one cell (range) designation.
 
J

JLGWhiz

Also, this:

..SetRange Range("A1:" & "S" & lastrow)

Would work as:

..SetRange Range("A1:S" & lastrow)
 
J

JLGWhiz

Also, this:

..SetRange Range("A1:" & "S" & lastrow)

doesn't make sense as it stands. What is SetRange?
Is it a public variable, macro? If you are trying to set a range,
then use:

..Set myRange = Range("A1:S" & lastrow)
 
J

JLGWhiz

This is the format and syntax that I use.

Sub SortJohnny()
Dim lastRow As Long
lastRow = Sheets("Working Folder").Cells(Rows.Count) _
.End(xlUp).Row
Set Wks = Sheets("Working Folder").Range("A1:S" & lastRow)
wks.Sort Key:=Range("N1"), Header:=xlYes, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End Sub
 
D

Dave Peterson

I wouldn't use wks to represent a range <vbg>. And I'd qualify that key1:=...
stuff.

And I thought that xlpinyin was for Chinese characters!

Sub SortJohnny()
Dim lastRow As Long
dim rng as range
lastRow = Sheets("Working Folder").Cells(Rows.Count).End(xlUp).Row
Set rng = Sheets("Working Folder").Range("A1:S" & lastRow)
rng.Sort Key1:=sheets("working folder").Range("N1"), Header:=xlYes, _
MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End Sub
 
J

JLGWhiz

Hi Dave,
Haste makes waste! You're right about the PinYin and according to VBA help,
that is the default method. I think the OP tuned out anyhow.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top