EXCEL VBA - セルの取得と設定

セルの取得

セルの値を取得するには、以下のように記述します。

Dim obj As range
Set obj = Range("A1")
セルの取得

セルを表すオブジェクトは Range オブジェクトです。Range オブジェクトは Worksheet オブジェクトのプロパティです。上記のサンプルプログラムは Worksheet オブジェクトの指定を省略していますが、Worksheet オブジェクトを省略した場合は、アクティブな Worksheet が対象になります

Range プロパティの引数としてセル番号を指定することで、対象のオブジェクトに含まれる Range オブジェクトを取得することができます。ただし、セル番号のアドレス形式は A1 スタイルの形式で指定する必要があります。R1C1 スタイルの形式は使用できません。

Range プロパティの引数には、セル番号以外にも範囲指定することができます。

Dim obj As range
Set obj = range("A1:D10")
セルの取得

任意のセル番号を複数指定することもできます。

Dim obj As range
Set obj = range("A1, B2, C3")
セルの取得

セル名による指定もできます。

Dim obj As range
Set obj = range("Sample")
セルの取得

セルに埋め込まれた「式」を取り出すには、Formula プロパティを使用します。

Dim obj As range
Set obj = Range("A1")

Debug.Print (obj.Formula)
セルの取得

上記のサンプルコードは Worksheet の指定を省略しています。Worksheet オブジェクトを省略した場合は、アクティブな Worksheet が対象になりますが、他の Worksheet を参照する場合は、明示的に指定する必要があります。

Dim obj As range
Set obj = Worksheets("Sheet1").Range("A1")
セルの取得

セルの設定

セルに値を設定するには、以下のように記述します。

Range("A1").Value = 10
セルの設定

セルに「式」を埋め込むには、Formula プロパティを使用します。

Range("A1").Formula = "=SUM(A1:A3)"
セルの設定

上記のサンプルコードは、オブジェクトの記述を省略した記述になります。Range 型の変数を用意して記述する場合は、以下のように記述します。

Dim obj As Range

Set obj = Range("A1")
obj.Value = 10
セルの設定

Range プロパティと Cells プロパティ

上記のサンプルコードは、すべて Range プロパティで表しています。Range プロパティと同様にセル番号を指定する方法に Cells プロパティがあります。

Range プロパティと Cells プロパティの違いは、セル番号の指定形式です。Cells プロパティのセル番号の指定方法は、行番号と列番号の組み合わせて表現します。EXCEL の左上が基点となり 1 から始まります。つまり、左上のセル (Range で言う A1 セルに該当するセル) は Cells(1, 1) となります。

Dim obj As range

Set obj = Cells(2, 3)
obj.Value = 10
Range プロパティと Cells プロパティ

Cells プロパティは、単一のセルを扱う場合に使用します。Range プロパティでも同じことができますが、Cells プロパティの特徴は、セル位置を数値で指定が可能な点です。そのため、繰り返し処理や、セル位置を動的に変更させたい場合に向いています。Range プロパティでセル位置を変更する場合は、Offset プロパティを使用します。

Dim obj As Range

Set obj = Range("A1").Offset(RowOffset:=3, ColumnOffset:=3)
Range プロパティと Cells プロパティ

Offset プロパティは、基点となるセルから行方向と列方向に対してオフセットを正、負、または 0 で指定します。

関連記事