セルの数式を取得、設定、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 Sub
E3セルには、以下の式が入っています。
![](https://blogvba.com/wp-content/uploads/2024/07/キャプチャ-3.jpg)
stopで中断したときの配列 v は、以下の通りです。
![](https://blogvba.com/wp-content/uploads/2024/07/キャプチャ1.jpg)
コードの説明
- サブルーチンの宣言:
- このサブルーチンは、セルの数式を取得および設定する操作を行います。
- シートへの参照:
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
の内容や数式の設定結果を確認することができます。