範囲を指定するならRangeを使う。Cellsは範囲指定ができない。
変数を使って動的な処理を行うならCellsを使う。固定セルならRangeを使う。
人に見せるなら上記を守る。
CellsとRangeを使い分ける。(私は出来てない)
よくあるパターンから。
Dim r As Range '単一のセル指定 Set r = Range("A1") Set r = Cells(1, 1) Set r = Cells(1, "A") '範囲指定 以下3例全てA1:F3 Set r = Range("A1:F3") Set r = Range("A1", "F3") Set r = Range(Cells(1, 1), Cells(3, 6)) '行列の範囲指定 Set r = Range("A:B") 'A~B列 Set r = Range("1:2") '1~2行目 '全セル Set r = Cells Set r = Range(Rows(1), Columns(1))
以下、普通やらない書き方の例。
バグや敵を産み出す可能性がありますので、結果を隠しました。
Dim r As Range '例1 Set r = Range("A1:E5", "G2") '例2 Set r = Range("F1:B5").Cells(1, 1) '例3 Set r = Cells(3, 3).Range("A1", "E5") '例4 set r = Cells(2, 2).Rows("3:5")
例1 : A1:G5
例2 : B1
例3 : C3:G7
例4 : B4:B6 (出るには出たけど正しい動きなのか分かりませんゴメンナサイ)
以下、おまけ。
Cellsをアンダーバーを駆使して連続で約1,800個書いてみた。ちゃんと動く(笑)
更に連続コピペしたらソースが一部画面から消えたりExcelが強制終了してビビった。
これはよくない。真似してはいけません。注意喚起。
Dim r As Range Set r = Cells.Cells.Cells.Cells.Cells.Cells.Cells.Cells.Cells. _ Cells.Cells.Cells.Cells.Cells.Cells.Cells.Cells.Cells. _ Cells(1, 1) 'A1
強制終了前のスクリーンショット。
以上。