一言で言うと、変数を使う場合はCells、使わない場合はRangeにすると良いと思います。
変数を使わない場合にCellsを使うことは問題ありませんが、Rangeに変数を使う場合の次のようになり、あまりおすすめしません。
Range("A" & i)
というのは、For Next構文でセルにデータを列方向に入力していく場合は、良いのですが、行方向に入力する際はややこしくなります。
Cells(行,列)であれば、
例えば、Cells(i,1)と書けば済みます。
一方、セル範囲の指定に変数を使う場合は、RangeとCellsを組み合わせます。
(例)Range(Cells(1,1),Cells(i,j))