関数・メソッド

セルの数式を取得する【Formula/FormulaR1C1プロパティ】【ExcelVBA】

構文

Object.Formula / Object.FormulaR1C1

Valueプロパティはセルの入力値を取得しますが、
Formulaプロパティ/FormulaR1C1プロパティはセルの数式を取得します。

FormulaはA1形式で数式を取得します。
FormulaR1C1はR1C1形式で数式を取得します。

Formula/FormulaR1C1のコードサンプル

Public Sub test()

    '■セルA1に"=SUM(A2:A10)"と入力した場合
    Debug.Print Range("A1").Formula       '=SUM(A2:A10)
    Debug.Print Range("A1").FormulaR1C1   '=SUM(R[1]C:R[9]C)
    
    '■セルA1に"=SUM($A$2:$A$10)"と入力した場合
    Debug.Print Range("A1").Formula       '=SUM($A$2:$A$10)
    Debug.Print Range("A1").FormulaR1C1   '=SUM(R2C1:R10C1)
    
    '■セルA1に"=SUM(A$2:A$10)"と入力した場合
    Debug.Print Range("A1").Formula       '=SUM(A$2:A$10)
    Debug.Print Range("A1").FormulaR1C1   '=SUM(R2C:R10C)
    
    '■セルA1に"=SUM($A2:$A10)"と入力した場合
    Debug.Print Range("A1").Formula       '=SUM($A2:$A10)
    Debug.Print Range("A1").FormulaR1C1   '=SUM(R[1]C1:R[9]C1)
    
    '■セルA1に"あいうえお"と入力した場合
    Debug.Print Range("A1").Formula       'あいうえお
    Debug.Print Range("A1").FormulaR1C1   'あいうえお
    
End Sub

注意点

  • 数式があれば、数式通りに取得します。数式でない場合はそのまま値を取得します。
  • 数式かどうかチェックしたい場合はHasFormulaプロパティで判別可能です。

関連記事

セルに値を入力する【Valueプロパティ】【ExcelVBA】
セルのシリアル値を取得する【Value2プロパティ】【ExcelVBA】
セルの表示しているデータを取得する【Textプロパティ】【ExcelVBA】
【VBA基本】変数のデータ型一覧
【VBA基本】セルやセル範囲の値を消去する
RangeとCellの使いわけ【VBA基本】

コメント

タイトルとURLをコピーしました