【VBA】Rangeオブジェクト
VBAではワークシートのセルをRangeオブジェクトで操作します。これは単体セルであっても、複数セル、あるいはセル範囲であっても、とにかくセルと名のつくものはみんな Rangeオブジェクトなのです。
だから
Rangeオブジェクト.メソッド
とか
Rangeオブジェクト.プロパティ
みたいに書けば、セルに色を塗ったり、枠線つけたり、色々なことができます。とりあえず今回はセルを選択するという一番基本的な操作を覚えましょう。これだけでも覚えることがたくさんあります。
まずは基本中の基本。セル A1 を選択してみましょう。Rangeプロパティで得た Rangeオブジェクトに対して Selectメソッドを使います。
'[VBA] 単体セルを選択 Sub Select_Range_A1() Range("A1").Select End Sub
Select_Range_A1() を実行するとセル A1 が選択されます。
次はセル範囲を選択してみましょう。
'[VBA] セル範囲を選択 Sub Select_Range_B2C4() Range("B2:C4").Select End Sub
Select_Range_B2C4() を実行すると、B2 から C4 のセル範囲が選択されます。
次はとびとびセルを選択してみましょう。
'[VBA] とびとびセルを選択 Sub Select_Range_B2D4() Range("B2, D4").Select End Sub
Select_Range_B2D4() を実行するとセル B2 とセル D4 が選択されます。
他にも色々な選択方法があるので、まとめて並べておきましょう。
Range("A1","C3").Select A1~C3 範囲を選択 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 という名前のセルを選択
Rangeオブジェクトを得るプロパティには、Rangeプロパティの他に Cellsプロパティというものがあって、これは単体セルのみ参照することができるのです。参照方法は
Cells(行,列)
です。たとえばセルC4 を参照したいときは
Cells(4, 3)
というように引数を指定します。慣れないうちは引数の順番が混乱してしまいがちだけど、
Cells(y,x)
というように覚えるのがおすすめですよ。y は縦方向、x は横方向というイメージが描きやすいでしょ? 実際 Cells の引数を変数として記述するときにも、この書き方をしてもいいのです。たとえば、セル C4 を選択するマクロは次のようになります。
'[VBA] セルC4 を選択 Sub Select_Range_C4() Cells(4, 3).Select End Sub
Cellsプロパティを用いると、ワークシートの全てのセルを選択することもできます。
'[VBA] 全てのセルを選択 Sub Select_Range_All() Cells.Select End Sub
Rangeプロパティと Cellsプロパティを組合わせてセル範囲を選択する方法もあります。
'[VBA] A1~C3範囲を選択 Sub Select_Range_A1C3() Range(Cells(1, 1), Cells(3, 3)).Select End Sub
これは Cellsプロパティの引数を変数にしたいときなんかに、けっこう使える記述なのです。たとえば …
'[VBA] 位置を指定して範囲を選択 Sub Select_Range() Dim y as Integer y = InputBox("行番号を入れてね") Range(Cells(y, 1), Cells(y + 2, 3)).Select End Sub
Select_Range() を実行すると「行番号を入れてね」てメッセージが現れるから、たとえば「3」を入れると、セル A3 からセル C5 までの範囲が選択されます。
というわけで、今日はそろそろこのへんで。皆さんも、RangeプロパティとCellsプロパティを自在に使いこなして、すぺしゃるなプロシージャを書いてくださいな。また次回お会いしましょう。
コメント