What makes your code error prone is that it uses ActiveCell etc... which then relies upon particular ranges being selected.
In a general sense, rather than using Offset within Range, Cells is better.
Code:
Sheet1.Range(Sheet1.Cells(2, 3), Sheet1.Cells(10, 5)).Select
(Not that I'm recommending the Select method attached on the end - I'm concentrating on the Range syntax). This syntax is useful in loops, for example. But there's nothing error prone about the last example I posted.