「数式を文字列で取得 VBA」
といった検索キーワードでアクセスがありました。
Range.Formulaプロパティで数式を取得できる
結論からいえば、拙著『いちばんやさしいExcel VBAの教本』の、Lesson 60「単なるデータを取得するRangeオブジェクトのプロパティを理解しましょう」でもお伝えしている、RangeオブジェクトのFormulaプロパティを使えば、セルに入力されている数式を文字列として取得できます。
数式を取得するサンプルマクロ
数式の入力されているセルがアクティブな状態で、以下のSubプロシージャを実行すれば、RangeオブジェクトのFormulaプロパティで数式を取得できることが確認できます。
Dim formula_ As String
formula_ = ActiveCell.Formula
MsgBox formula_
End Sub
ローカルウィンドウで変数の中身を確認しながらステップ実行を
拙著で多用しているローカルウィンドウで、変数formula_の中身を確認することもおすすめしておきます。
メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示して、ショートカットキー[F9]でステップ実行しましょう。
Range.Formulaプロパティの戻り値を代入するステートメント
formula_ = ActiveCell.Formula
が、実行されると、下図のように変数formula_に数式が代入されていることを確認できます。
上図はMIN関数の入力されているセルをアクティブにして実行した状態です。
この様子を見て、Rangeオブジェクトに用意されているFormulaプロパティが、数式を返すことをイメージしておきましょう。
.Valueも書きましょう
実はこの記事のキッカケとなった「数式を文字列で取得 VBA」を検索なさった方は、Rangeオブジェクトの値を取得するときに「.Value」を書いていないのではないのか、と危惧しています。
プロパティが2種類に分類できることを理解できていない段階でValueを書かない悪癖がついてしまうと、オブジェクトを取得・操作するコード(オブジェクト式)の理解はかなり難しくなると私は考えています。
- Newer:WorksheetFunction.Sumの戻り値の型
- Older:早い日付を表示する-MIN関数
Home » Excel VBA Rangeオブジェクト » セル数式 » 数式を文字列として取得するRange.Formulaプロパティ