Ваш код будет работать в пределах Sub , а не ячейки рабочего листа:
Function SelectedRange(Optional ShiftRow As Long = 0, Optional ShiftColumn As Long = 0) As Range
Set SelectedRange = Selection.Offset(ShiftRow, ShiftColumn)
End Function
Sub MAIN()
Dim r As Range
Range("B9").Select
Set r = SelectedRange(1, 1)
MsgBox r.Address
End Sub
Чтобы использовать в ячейке листа, передайте обратно адрес выбранных ячеек:
Function SelectedRange2(Optional ShiftRow As Long = 0, Optional ShiftColumn As Long = 0) As String
Application.Volatile
SelectedRange2 = Selection.Offset(ShiftRow, ShiftColumn).Address(0, 0)
End Function
Сначала нажмите на ячейку (и) и нажмите F9 , чтобы форсировать расчет: