Rangeの数式の取得や数式入力はFormulaプロパティ
セルへ数式を反映する【Formulaプロパティ】【ExcelVBA】で説明していますが、
通常、VBAでセルに数式を反映する場合は.Formulaをつけます。
'(例) Range("A1").Formula = "=SUM(B1:E1)" Cells(2, 1).Formula = "=B2&C2"
Formulaプロパティがなくても同様の動作となる
Web上にサンプルが豊富にあるVBAマクロのコードでは、
Formulaを付けない(省略された)コードも多く見受けられます。
これはどちらも正解で、Range、Cellsの場合、省略された場合は.Formulaプロパティが指定されたとみなします。
'(例).Formulaを省略しても Range("A1") = "=SUM(B1:E1)" Cells(2, 1) = "=B2&C2" '(例).Formulaを省略しなくても結果は同じ Range("A1").Formula = "=SUM(B1:E1)" Cells(2, 1).Formula = "=B2&C2"
注意点
- Formulaの場合は省略せずきちんと付けた方が望ましいです。
それは、データを取得する場合は必須だからです。Range("A1").Formula = "=SUM(B1:E1)" '省略すると=SUM(B1:E1)の結果を取得する Debug.Print Range("A1") '0 '省略しないと数式をそのまま取得する Debug.Print Range("A1").Formula '=SUM(B1:E1)
※FormulaではなくVaueの場合をつけてもつけなくてもどちらでもいいです。
- 最初は誰もがコピペで見様見真似でコード作成します。正常動作後、コードを見直すのは大事です。
- RangeとCellの違いや、使い分けはは以下記事を参考にしてください。
RangeとCellの使いわけ【VBA基本】
関連記事
セルに値を入力する【Valueプロパティ】【ExcelVBA】
セルのシリアル値を取得する【Value2プロパティ】【ExcelVBA】
セルの表示しているデータを取得する【Textプロパティ】【ExcelVBA】
セルの数式を取得する【Formula/FormulaR1C1プロパティ】【ExcelVBA】
コメント