オブジェクト Range

Range

VBA(Visual Basic for Applications)において、Rangeオブジェクトは非常に重要な存在です。Excelのセルやセル範囲を操作するための基本的な構造であり、セルの選択・編集・書式設定・コピー・移動など、Excel操作の中心的な役割を果たします。


■ Rangeオブジェクトとは?

Range(レンジ)オブジェクトは、Excelの1つのセル、複数のセル、行、列、セル範囲などを表すオブジェクトです。VBAを使ってセルにデータを書き込んだり、読み取ったり、色や書式を変更したり、範囲をコピー・削除する際に使用します。


■ Rangeの基本構文

Range("A1")                    ' A1セル
Range("A1:B3") ' A1からB3までの範囲
Range("A:A") ' A列すべて
Range("1:1") ' 1行すべて

Worksheets("Sheet1").Range("A1") のように、ワークシートを明示して使うのが安全です。


■ 主なプロパティ(状態)

1. Value(値)

セルの中の値を取得・設定します。

Range("A1").Value = "Hello"
MsgBox Range("A1").Value

2. Formula(数式)

セルに数式を設定できます。

Range("B1").Formula = "=SUM(A1:A10)"

3. Address(アドレス)

範囲のアドレスを取得します。

MsgBox Range("B2").Address    ' → $B$2

4. Interior(塗りつぶし)

セルの背景色を設定します。

Range("A1").Interior.Color = RGB(255, 255, 0)  ' 黄色

5. Font(フォント)

文字の色、大きさ、太字などを設定できます。

With Range("A1").Font
.Bold = True
.Color = RGB(0, 0, 255) ' 青色
.Size = 14
End With

6. Rows / Columns

範囲内の行・列を取得します。

Range("A1:C3").Rows.Count    ' → 3
Range("A1:C3").Columns.Count ' → 3

■ 主なメソッド(動作)

1. Select

セルを選択します(ただし、通常は避けるべき)。

Range("A1").Select

2. Clear / ClearContents / ClearFormats

セルの内容や書式をクリアします。

Range("A1").Clear            ' 内容と書式すべて
Range("A1").ClearContents ' 内容のみ
Range("A1").ClearFormats ' 書式のみ

3. Copy / PasteSpecial

セルのコピーと貼り付け。

Range("A1").Copy Destination:=Range("B1")

または、書式だけ貼り付けたい場合:

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormats

4. Delete / Insert

セルを削除または挿入します。

Range("A2").Delete Shift:=xlUp
Range("A2").Insert Shift:=xlDown

■ Rangeの指定方法(バリエーション)

1. セルの結合

Range("A1:B2").Merge

2. 複数の離れたセル

Range("A1,A3,A5").Value = "X"

3. セルの相対指定

Range("A1").Offset(1, 0).Value = "下のセル"
Range("A1").Resize(3, 2).Value = "拡張範囲"
  • Offset(行, 列) は位置のずれ
  • Resize(行, 列) は範囲のサイズ変更

■ 変数への格納

Dim rng As Range
Set rng = Worksheets("Sheet1").Range("A1:B2")
rng.Value = "OK"

■ 使用例:表の全体操作

例1:列に見出しをつける

With Worksheets("Sheet1")
.Range("A1").Value = "氏名"
.Range("B1").Value = "年齢"
End With

例2:10行分のセルに色を塗る

Dim i As Long
For i = 2 To 11
If Cells(i, 2).Value >= 60 Then
Cells(i, 2).Interior.Color = RGB(255, 200, 200)
End If
Next i

■ 注意点とベストプラクティス

注意点内容
Selectは極力使わないSelectActivateは処理を遅くし、エラーの原因になります
ワークシートを明示するRange("A1")はアクティブシートに依存するため、Worksheets("Sheet1").Range("A1")のように指定が望ましい
値の代入は配列が速い複数セルの値を一括で代入すると高速化できる
Range("A1:C3").Value = [["A", "B", "C"], [1, 2, 3], [4, 5, 6]]

■ まとめ

項目内容
オブジェクト名Range(セルやセル範囲)
主な操作値・数式の設定、塗りつぶし、フォント、クリア等
主なメソッドClear, Copy, Delete, Insert, Select
主なプロパティValue, Formula, Interior, Font, Address
範囲の指定アドレス文字列、Offset/Resize、変数など
ベストプラクティスSelectを避け、ワークシートを明示し、配列代入を活用

Rangeオブジェクトは、VBAの中で最も使用頻度が高く、柔軟性の高いオブジェクトです。
操作を正しく理解し、適切に使い分けることで、より強力で効率的なExcelマクロが作れるようになります。

タイトルとURLをコピーしました