« Automatically adjust height of merged cell | トップページ | Use Cells property for Range object »

2018年7月29日 (日)

RangeオブジェクトにCellsプロパティを使う

あるセルを参照するのに
RangeプロパティとCellsプロパティの両方が使えます。

アクティブシートのセルA1の値を1にするのは
次の2通りでできます。
ActiveSheet.Range("A1") = 1
ActiveSheet.Cells(1, 1) = 1

Rangeプロパティを使うと
A1形式で指定しないといけないので
For文の中ではRangeプロパティは使いにくいです。

一方でCellsプロパティは
行と列を数字で指定できるので
For文の中で使いやすいです。

今までRangeプロパティとCellsプロパティは
上述の理由から使い分けをして来ました。

実は、CellsプロパティはRangeオブジェクトにも使えます。
参照:MSDNサイト内「Cells プロパティ

例えば次のように使います。

Range("B2:D6").Cells(2, 2) = 2

上のコードはアクティブシートのセルC3の値を2にします。

Vba20180729a
この使い方ではCellsプロパティは
Rangeオブジェクトの範囲(上の図の赤枠内)で
左上のセルを基準に(2,2)の位置である
セルC3を相対的に指定します。

この使い方は結構便利です。

RangeオブジェクトにCellsプロパティを使用して
Rangeオブジェクトに含まれる各セルに
値を入れて行くのに使えます。

Rangeオブジェクトの行数、列数はそれぞれ
Range("B2:D6").Rows.Count
Range("B2:D6").Columns.Count
で取得して、
For文のインデックスに使用します。

コードはこちら

RangeオブジェクトにCellsプロパティを使用するコード:

Sub macro180729a()
'Cellsプロパティの使い方
'Rangeオブジェクトに使用

    Dim i As Integer, j As Integer
    Dim Rng1 As Range
   
    Set Rng1 = Range("B2:D6")
   
    For i = 1 To Rng1.Rows.Count
        For j = 1 To Rng1.Columns.Count
            Rng1.Cells(i, j) = i & ", " & j
        Next j
    Next i
   
End Sub

実行結果:
Vba20180729b

Rangeオブジェクトの範囲"B2:D6"のセルに値が入力されました。

|

« Automatically adjust height of merged cell | トップページ | Use Cells property for Range object »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: RangeオブジェクトにCellsプロパティを使う:

« Automatically adjust height of merged cell | トップページ | Use Cells property for Range object »