セルの数式を取得、設定、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セルには、以下の式が入っています。

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

コードの説明

  1. サブルーチンの宣言:
    • このサブルーチンは、セルの数式を取得および設定する操作を行います。
  2. シートへの参照:
    • Sheet1 を対象とした操作を With ステートメント内で行います。
  3. 単一セルの数式の取得:
    • セル E3 の数式を標準形式でデバッグウィンドウに出力します。
    • セル E3 の数式を R1C1 形式でデバッグウィンドウに出力します。
  4. セル範囲の数式の取得:
    • セル範囲 E3:E6 の数式を配列 v に代入します。
  5. デバッグモードへの移行:
    • Stop ステートメントにより、コードの実行が一時停止し、デバッグモードに移行します。
  6. セル範囲の数式の設定(R1C1形式):
    • セル範囲 F3:F6R1C1 形式の数式を設定します。この数式は、左側に4列ずれたセル(つまり列 B のセル)の日付から現在の日付までの年数を計算する DATEDIF 関数を使用しています。

補足説明

  • .Formula プロパティ:
    • Formula プロパティは、セルまたはセル範囲の数式を標準形式で取得または設定するために使用されます。
  • .FormulaR1C1 プロパティ:
    • FormulaR1C1 プロパティは、セルまたはセル範囲の数式を R1C1 形式で取得または設定するために使用されます。
    • R1C1 形式は、行と列のインデックスを使用して相対的な位置を指定する数式形式です。
  • Stop ステートメント:
    • Stop ステートメントは、コードの実行を一時停止し、デバッグモードに移行します。デバッグモードでは、変数の値やステートメントの実行をステップ実行することができます。

このコードを実行すると、指定したセルおよびセル範囲の数式を取得および設定し、各ステップでの結果をデバッグウィンドウに出力します。また、デバッグモードに移行することで、配列 v の内容や数式の設定結果を確認することができます。

Follow me!

Excel

次の記事

セル範囲のコピー、カット