Modify code to used range and lr

FROGGER24

Well-known Member
Joined
May 22, 2004
Messages
704
Office Version
  1. 2013
  2. 2010
Platform
  1. Windows
I would like to sort the used range on a worksheet called hours, column F3 to lr and A3 to lr, last row determined by column A. Row 2 contains the headers. That code takes 5 minutes or so to run.

This is the current code:
Range("A2:XFD103").Select
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Add Key:=Range("F3:F103") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Add Key:=Range("A3:A103") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hours").Sort
.SetRange Range("A2:XFD103")

.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3").Select

Appreciate any help provided
 

Excel Facts

Ambidextrous Undo
Undo last command with Ctrl+Z or Alt+Backspace. If you use the Undo icon in the QAT, open the drop-down arrow to undo up to 100 steps.
What is the last column in the sort table...surely not "XFD"
 
Upvote 0
Maybe this
VBA Code:
Sub MM1()
Dim lr As Long, lc As Integer
lr = Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
lc = Cells.Find("*", , xlValues, , xlByColumns, xlPrevious).Column
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Add Key:=Range("F3:F" & lr) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Hours").Sort.SortFields.Add Key:=Range("A3:A" & lr) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hours").Sort
    .SetRange Range(Cells(2, 1), cels(2, lc))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub
 
Upvote 0
Or maybe this?

VBA Code:
Sub FroggerSort()
    With ActiveSheet.Range("A2").CurrentRegion
        .Sort Key1:=.Range("A2"), order1:=1, Header:=1, _
        Key1:=.Range("F2"), order1:=1, Header:=1
    End With
End Sub
 
Upvote 0
Sorry, SHB

VBA Code:
Sub FroggerSort()
    With ActiveSheet.Range("A2").CurrentRegion
        .Sort Key1:=.Range("A2"), order1:=1, Header:=1, _
        Key2:=.Range("F2"), order1:=1, Header:=1
    End With
End Sub
 
Upvote 0
Another option
VBA Code:
Sub Frogger()
   Dim UsdRws As Long
   
   With Sheets("Hours")
      UsdRws = .Range("A" & Rows.Count).End(xlUp).Row
      With .Range("A2", .Cells(2, Columns.Count).End(xlToLeft))
         .Resize(UsdRws).Sort .Columns(1), xlAscending, .Columns(6), , xlAscending, Header:=xlYes
      End With
   End With
End Sub
 
Upvote 0
Solution
if possible would like to have the code auto-scroll to the cell with current date in row 1, columns A-F are frozen.

Thanks in advance for your time and help!
 
Upvote 0
Have you tried any of the codes & do they do what you asked for?
 
Upvote 0
When I copied into new workbook, I had placed the codes in the wrong order. Your solution worked as requested. Thank you
 
Upvote 0

Forum statistics

Threads
1,214,874
Messages
6,122,036
Members
449,062
Latest member
mike575

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top