セルの数式を取得、設定、Formula、FormulaR1C1
タイトルのマクロは、以下です。
' セルの数式を取得、設定、Formula、FormulaR1C1
Private Sub Formula_FormulaR1C1()
Dim v As Variant
With Sheet1
' セルE3の数式をデバッグウィンドウに出力する
Debug.Print .Range("E3").Formula
' セルE3の数式(R1C1形式)をデバッグウィンドウに出力する
Debug.Print .Range("E3").FormulaR1C1
' セル範囲E3:E6の数式を配列vに代入する
v = .Range("E3:E6").Formula
' コードの実行を停止し、デバッグモードに移行する
Stop
' セル範囲F3:F6にR1C1形式の数式を設定する
.Range("F3:F6").FormulaR1C1 = "=datedif(RC[-4],today(),""Y"")"
End With
End SubE3セルには、以下の式が入っています。

stopで中断したときの配列 v は、以下の通りです。

コードの説明
- サブルーチンの宣言:
- このサブルーチンは、セルの数式を取得および設定する操作を行います。
- シートへの参照:
Sheet1を対象とした操作をWithステートメント内で行います。
- 単一セルの数式の取得:
- セル
E3の数式を標準形式でデバッグウィンドウに出力します。 - セル
E3の数式をR1C1形式でデバッグウィンドウに出力します。
- セル
- セル範囲の数式の取得:
- セル範囲
E3:E6の数式を配列vに代入します。
- セル範囲
- デバッグモードへの移行:
Stopステートメントにより、コードの実行が一時停止し、デバッグモードに移行します。
- セル範囲の数式の設定(R1C1形式):
- セル範囲
F3:F6にR1C1形式の数式を設定します。この数式は、左側に4列ずれたセル(つまり列Bのセル)の日付から現在の日付までの年数を計算するDATEDIF関数を使用しています。
- セル範囲
補足説明
.Formulaプロパティ:Formulaプロパティは、セルまたはセル範囲の数式を標準形式で取得または設定するために使用されます。
.FormulaR1C1プロパティ:FormulaR1C1プロパティは、セルまたはセル範囲の数式をR1C1形式で取得または設定するために使用されます。R1C1形式は、行と列のインデックスを使用して相対的な位置を指定する数式形式です。
Stopステートメント:Stopステートメントは、コードの実行を一時停止し、デバッグモードに移行します。デバッグモードでは、変数の値やステートメントの実行をステップ実行することができます。
このコードを実行すると、指定したセルおよびセル範囲の数式を取得および設定し、各ステップでの結果をデバッグウィンドウに出力します。また、デバッグモードに移行することで、配列 v の内容や数式の設定結果を確認することができます。

