I eventually figured out a way to duplicate the Excel resize method although not exactly. This doesn't go beyond the end of SrcRange but that that was fine for my requirements.
Function Resize(SrcRange As Range, ByVal RowCount As Integer, ByVal ColumnCount As Integer) As Range
'this function resizes the range but cannot go beyond the end of SrcRange
Dim StartCell As Range
Dim EndCell As Range
Set StartCell = SrcRange.cell(0, 0)
Set EndCell = SrcRange.cell(RowCount - 1, ColumnCount - 1)
Dim LeftAddr As String
Dim RightAddr As String
LeftAddr = Left(StartCell.CoordinateString, InStr(StartCell.CoordinateString, "..") + 1)
RightAddr = Left(EndCell.CoordinateString, InStr(EndCell.CoordinateString, "..") - 1)
Dim NewRange As Range
Set NewRange = SrcRange.Parent.Ranges(LeftAddr & RightAddr)
Set Resize = NewRange
End Function
Here is the OffSet method, but again it doesn't go beyond the end of SrcRange
Function OffSet(SrcRange As Range, ByVal byRow As Integer, ByVal byColumn As Integer) As Range
'this function offsets the beginning of the range but does not go beyond the end of SrcRange
Dim StartCell As Range
Dim EndCell As Range
Set StartCell = SrcRange.Cell(byRow, byColumn)
Set EndCell = SrcRange.Cell(SrcRange.EndRow - SrcRange.StartRow, SrcRange.EndColumn - SrcRange.StartColumn)
Dim LeftAddr As String
Dim RightAddr As String
LeftAddr = Left(StartCell.CoordinateString, InStr(StartCell.CoordinateString, "..") + 1)
RightAddr = Left(EndCell.CoordinateString, InStr(EndCell.CoordinateString, "..") - 1)
Dim NewRange As Range
Set NewRange = SrcRange.Parent.Ranges(LeftAddr & RightAddr)
Set OffSet = NewRange
End Function
To extend these to function exactly like Excel, I think I would need a Cells function like this; but again this is incomplete as it only works for the first sheet.
Function Cells(RowNum As Long, ColNum As Long)
Dim rg As Range
Set rg = CurrentDocument.Ranges("A:A1..A:IV8192")
Set rg = rg.Cell(RowNum - 1, ColNum - 1)
Set Cells = rg
End Function
Hope this helps someone.