R1C1形式での式の指定

広告

前のページでは「A1」形式での「式」を記述していました。ここでは「R1C1」形式で「式」を記述する方法を見ていきます。「R1C1」形式で式を記述する場合は「Formula」プロパティの代わりに「FormulaR1C1」プロパティを使います。

Dim range1 As Range

Set range1 = Range("A4")
range1.FormulaR1C1 = "=Sum(R[-3]C:R[-1]C)"

またRangeオブジェクトを取り出す部分を省略して次のようにも記述可能です。

Range("A4").FormulaR1C1 = "=Sum(R[-3]C:R[-1]C)"

R1C1形式の場合、Rが行、Cが列を表し、現在のアクティブセルからの相対指定でセル位置を指定します。相対指定は「R」及び「C」のそれぞれに括弧([])の中に数値で指定します。

R[-2]C       同じ列で 2 行上のセル
RC[3]        同じ行で 3 列右のセル
R[2]C[2]     2 行下で 2 列右のセル

R1C1形式の相対位置での指定を行った場合、例えば同じような「式」を使うような場合には相対位置で「式」を記述しておけば全て同じ「式」を使うことができて便利です。

サンプルプログラム

では実際に試してみます。

R1C1形式での式の設定

事前にこのようなExcelファイルを用意しておきます。個人別の合計を集計してみましょう。

testcellvalue2.bas

Sub テスト()
    
    Dim i As Integer
    
    For i = 2 To 4
        Cells(5, i).FormulaR1C1 = "=Sum(R[-3]C:R[-1]C)"
    Next i
        
End Sub

実行してみると次のようになります。

R1C1形式での式の設定

実際にExcel上でセルに設定されている値を見てみると「A1」形式に変換されて設定されています。では今度は設定されている値を取り出してみましょう。

Sub テスト()
    
    MsgBox Cells(5, 4).FormulaR1C1
        
End Sub

実行してみると次のようになります。

R1C1形式での式の設定

このように「A1」形式で入力されている式であっても、「R1C1」形式で取り出すことが可能です。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )