One way of doing it (not in the most elegant way) is this. Using an additional sheet, copy the range starting from the bottom and then copy the result over the original selection. After that, delete the helping additional sheet.
Sub reverse()
Dim csh As Worksheet
Dim addsh As Worksheet
Dim lr As Long, add As String
Dim i As Long, sel As String
Application.ScreenUpdating = False
sel = Selection.Address
add = Selection(1, 1).Address
lr = Selection.Rows.Count
Set csh = ActiveSheet
Set addsh = Sheets.add(, csh)
For i = lr To 1 Step -1
Range(sel).Rows(i).Copy addsh.Range("A" & lr - i + 1)
Next
addsh.UsedRange.Copy csh.Range(add)
addsh.Delete
Application.ScreenUpdating = True
End Sub
Bookmarks