You can actually store the UsedRange
of a worksheet. Or just copy to another sheet directly. e.g.
Set oWS1 = Worksheets("Sheet1")
Set oWS2 = Worksheets("Sheet2")
oWS2.UsedRange.Clear ' Clear used range in Sheet2
oWS1.UsedRange.Copy oWS2.Range("A1") ' Copies used range of Sheet1 to A1 of Sheet2
'Set oRng = oWS1.UsedRange ' Sets a Range reference to UsedRange of Sheet1
To get the last row of a sheet:
lLastRow = oWS1.UsedRange.SpecialCells(xlLastCell).Row
EDIT (Getting Last Row from UsedRange's Address):
Dim sAddr as String, lLastRow As Long
sAddr = oWS1.UsedRange.Address
lLastRow = CLng(Mid(sAddr, InStrRev(sAddr , "$") + 1))