単体セルもセル範囲も Rangeオブジェクトです
VBA ではワークシートのセルを Rangeオブジェクト で操作します。
これは単体セルであっても、複数セル、あるいはセル範囲であっても、とにかくセルと名のつくものはみんな Rangeオブジェクトなのです。
だから
とか
みたいに書けば、セルに色を塗ったり、枠線つけたり、色々なことができます。とりあえず今回は セルを選択する という一番基本的な操作を覚えましょう。これだけでも覚えることがたくさんあります。
Rangeプロパティと Selectメソッドでセルを選択します
まずは基本中の基本。セル A1 を選択してみましょう。Rangeプロパティで得た Rangeオブジェクトに対して Selectメソッドを使います。
Sub SelectRangeA1()
Range("A1").Select
End Sub
実行するとセル A1 が選択されます。
次はセル範囲を選択してみましょう。
Sub SelectRangeB2C4()
Range("B2:C4").Select
End Sub
実行すると B2 から C4 のセル範囲が選択されます。
次はとびとびセルを選択してみましょう。
Sub SelectRange3()
Range("B2, D4").Select
End Sub
マクロを実行すると B2 と D4 が選択されます。
他にも色々な選択方法があるので、まとめて並べておきましょう。
Range("B2:C3,D7:E8").Select B2~C3 範囲とD7~E8 範囲を選択
Range("B:B").Select B 列を選択
Range("B:E").Select B 列から E列までを選択
Range(Columns(3), Columns(5)).Select C 列から E 列までを選択
Range("A:A,C:C").Select A 列と C 列を選択
Range("5:5").Select 5 行を選択
Range("3:6").Select 3 行から 7 行を選択
Range(Rows(2), Rows(5)).Select 2 行から 5 行を選択
Range("5:5,8:8").Select 5 行と 8 行を選択
Range("1:3,5:5").Select 1~3 行と5 行を選択
Range("KOBATO").Select KOBATO という名前のセルを選択
Cellsプロパティと Selectメソッドでセルを選択します
Rangeオブジェクトを得るプロパティには、Rangeプロパティの他に Cellsプロパティ というものがあって、これは単体セルのみ参照することができるのです。参照方法は
です。たとえばセルC4 を参照したいときは
というように引数を指定します。慣れないうちは引数の順番が混乱してしまいがちだけど、
というように覚えるのがおすすめですよ。y は縦方向、x は横方向というイメージが描きやすいでしょ? 実際 Cells の引数を変数として記述するときにも、この書き方をしてもいいのです。セルC4 を選択するマクロは次のようになります。
Sub SelectRangeC4()
Cells(4, 3).Select
End Sub
Cellsプロパティを用いるとワークシートの全てのセルを選択することもできます。
Sub SelectRangeAll()
Cells.Select
End Sub
え? 全てのセルを選択するようなステートメントに、いったい何の使い道があるのかって? ...... こばともよくわかんない。あ、そうそう、Rangeプロパティと Cellsプロパティを組合わせてセル範囲を選択する方法もありますよ。これはちょっぴり高級なテクニックね~。
Sub SelectRangeA1C3()
Range(Cells(1, 1), Cells(3, 3)).Select
End Sub
これは Cellsプロパティの引数を変数にしたいときなんかに、けっこう使える記述なのです。たとえばね ......
Sub SelectRange()
Dim y as Integer
y = InputBox("行番号を入れてね")
Range(Cells(y, 1), Cells(y + 2, 3)).Select
End Sub
マクロを実行すると「行番号を入れてね」てメッセージが現れるから、たとえば「 3 」を入れると、セルA3 からセルC5 までの範囲が選択されます。
というわけで、今日はそろそろこのへんで。こばとちゃんダンス♪ こばとちゃんダンス♪ え? どうして踊るのかって? 特に意味はないけど、なんとなく。