Home » Excel VBA Rangeオブジェクト » セル数式 » 数式を文字列として取得するRange.Formulaプロパティ

数式を文字列として取得するRange.Formulaプロパティ

対象:Excel2010, Excel2013, Windows版Excel2016

「数式を文字列で取得 VBA」
といった検索キーワードでアクセスがありました。

Range.Formulaプロパティで数式を取得できる

結論からいえば、拙著『いちばんやさしいExcel VBAの教本』の、Lesson 60「単なるデータを取得するRangeオブジェクトのプロパティを理解しましょう」でもお伝えしている、RangeオブジェクトのFormulaプロパティを使えば、セルに入力されている数式を文字列として取得できます。

数式を取得するサンプルマクロ

数式の入力されているセルがアクティブな状態で、以下のSubプロシージャを実行すれば、RangeオブジェクトのFormulaプロパティで数式を取得できることが確認できます。

Sub 数式を取得する()
 Dim formula_ As String
 formula_ = ActiveCell.Formula
 MsgBox formula_
End Sub

ローカルウィンドウで変数の中身を確認しながらステップ実行を

拙著で多用しているローカルウィンドウで、変数formula_の中身を確認することもおすすめしておきます。

メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示して、ショートカットキー[F9]でステップ実行しましょう。

Range.Formulaプロパティの戻り値を代入するステートメント
  formula_ = ActiveCell.Formula
が、実行されると、下図のように変数formula_に数式が代入されていることを確認できます。

ローカルウィンドウ:Range.Formula

上図はMIN関数の入力されているセルをアクティブにして実行した状態です。

この様子を見て、Rangeオブジェクトに用意されているFormulaプロパティが、数式を返すことをイメージしておきましょう。

.Valueも書きましょう

実はこの記事のキッカケとなった「数式を文字列で取得 VBA」を検索なさった方は、Rangeオブジェクトの値を取得するときに「.Value」を書いていないのではないのか、と危惧しています。

プロパティが2種類に分類できることを理解できていない段階でValueを書かない悪癖がついてしまうと、オブジェクトを取得・操作するコード(オブジェクト式)の理解はかなり難しくなると私は考えています。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » セル数式 » 数式を文字列として取得するRange.Formulaプロパティ

「セル数式」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.