Just had to ignore everything else and try it and I missed a couple of subtle (or not so subtle) points
This is what the function should become
Function timeSheet(ws As Worksheet, routput As Range) As Range
Dim ro As Range
Dim c As Range, ct As Range, rt As Range, u As Range
ws.Activate
Set u = ws.UsedRange
Set ct = u.Resize(, 1)
Set ro = routput
For Each c In ct.Rows
Set ro = ro.Offset(1)
Set rt = c.Resize(, u.Columns.Count)
rt.Select
ro.Cells(1, 1).Value = rt.Worksheet.Name & "!" & rt.Address
ro.Cells(1, 2) = shortCalcTimer(rt, False)
Next c
Set timeSheet = ro
End Function