VBAオジサンのらくがき帳

#04 Range オブジェクトについて

2020-09-13 00:00:00

Excel VBA プログラミングでは、オブジェクトを使用してマクロの処理を作成していくということがよくあります。ここでは、ワークシートのセルの操作などにつかわれる、Range オブジェクトについて実例をあげて、使い方をみてみたいと思います。

下のコードはアクティブなワークシートの A1 セルにアクセスするための、Range オブジェクトを取得する操作となります。A1 セルを Range オブジェクトとして取得することができます。

Range("A1")

下のようにRange 型の変数を定義してRange オブジェクトを代入することもできます。一般的な値(数値など)とはちがい、オブジェクトの代入する際には変数の前にSetが必要になることに注意してください。同じ操作は Cells を使って書くこともできます。

Dim r As Range
Set r = Range("A1")
Set r = Cells(1 ,1)

詳しい説明は省きますが、Range、Cellsはどちらもアクティブシートに対して指定した範囲を Range オブジェクトとして取得することができます。ここでは暗黙的にアクティブシートに対して処理が行われているということを頭の片隅に入れておくとよいかもしれません。

下のように範囲を指定すると、複数のセルを含むRange オブジェクトの取得が可能です。

Selection を使うと、現在選択されているセルの範囲をRange オブジェクトとして取得することが可能です。何も選択しない状態で実行してしまうとエラーになるので注意が必要です。

Set r = Selection

オブジェクトの様々な属性をあらわしているものをプロパティと呼びます。値を設定できるプロパティとできないプロパティがあったり、プロパティが別のオブジェクトであったり、いろんなタイプのプロパティがあります。

Range オブジェクトのプロパティを使用するとワークシートのセルに対して下のような操作ができます。セル操作のほとんどはRange オブジェクトをつかって実装できるのではないかと思います。(サンプルでしめしたように、Range、Cellsを使って直接セルを操作することも、変数に代入してからつかうこともできます。)

'Rangeを使用して
Range("A1").Formula = "=A2+A3" '式を設定

'Cellsを使用して
Cells(1, 1).Interior.Color = vbRed '背景色を設定(定義済みの定数を使用)

'変数を使用して
Dim r As Range
Set r = Range("B1")
r.RowHeight = 20 '高さを20ポイントに設定
r.Font.Color = RGB(255, 0, 0) 'フォントの色を設定(RGB関数を使用)
r.Borders(xlEdgeBottom).LineStyle = xlContinuous 'セルの下に罫線を設定 

このように Range オブジェクトをつかうと、いままで Excel の画面から操作していたいろいろな処理がプログラムでできるようになります。

Range オブジェクトには(他のオブジェクトにも)たくさんのプロパティがあって、とてもおぼえていられませんので、しらべながらマクロを書いていくのが普通ではないかと思います。よくつかう調べ方を紹介します。