Evaluateメソッド(文字列の数式を実行します)
Evaluateメソッドは、Excelで使用する名前をオブジェクトまたは値に変換します。
簡単に説明すれば、セルに入れる数式を文字列としてVBAで実行できます。
Evaluateメソッドの構文
Application
Worksheet
Chart ・・・ グラフシートです、具体的な使用方法が不明なので解説を省略します。
修飾せずにEvaluateとだけ記述した場合はApplicationになります。
Evaluateを実際に使用する場合の多くは、修飾せずにApplicationとして使用します。
名前の長さは255文字以下にする必要があります。
ただし、このメソッドでは、参照は常に絶対参照として扱われます。
・セル範囲を表す参照演算子(:)
・セル参照の共通部分を表す参照演算子(スペース)
・セル参照の複数選択を表す参照演算子(,)
これらを使用できます。
Evaluateの糖衣構文として[ ]角括弧があります。
角括弧を使用してコードの記述を短くすることができますが、(変数等を使用した)動的な指定が出来ませんので、VBAで使う機会はかなり限られてきます。
角括弧では直接指定しますが、Evaluateでは引数に文字列を指定できます。
したがって、EvaluateではVBA内で作成した文字列が入った変数を使用することができます。
Evaluateメソッドの解説と使用例
文字列の数式を計算する
Debug.Print Evaluate("1+2+3")
Debug.Print [1+2+3]
Evaluateは文字列を""ダブルクォーテーションで囲み、文字列データとして引数に指定します。
糖衣構文の[]角括弧では直接記述します。
アクティブシートのセルを参照する
Debug.Print Evaluate("A1")
Debug.Print [A1]
Evaluateと[ ]での記述の違い、""ダブルクォーテーションで囲むかどうかの違いに注意してください。
ワークシートを指定してセルを参照する
Debug.Print Worksheets("Sheet1").Evaluate("A1")
Debug.Print Evaluate("Sheet1!A1")
Debug.Print [Sheet1!A1]
上記はいずれもSheet1のA1セルを参照しています。
名前定義でセル参照する
Worksheets("Sheet1").Range("A1").Name = "名前1"
Debug.Print Evaluate("名前1")
ここでは分かり易いようにVBAで名前定義していますが、
もちろん、事前に定義されている名前定義も使用できます。
ワークシート関数を実行する
Debug.Print Evaluate("SUM(A1:A3)")
Debug.Print [SUM(A1:A3)]
ワークシートのセルに入れることのできる数式であればEvaluateメソッドの引数として指定できます。
Evaluate("=SUM(A1:A3)")
このように、先頭の=を含めても構いません。
配列も返します
Dim ary
ary = Evaluate("A1:A3")
Dim ary
ary = [A1:A3]
この結果は、変数aryに配列が入ります。

Evaluate("{1,2,3}")
[{1,2,3}]
変数を使った複雑な指定
Dim arg1 As String
Dim arg2 As String
arg1 = "2020/1/5"
arg2 = "yyyy/mm/dd"
Debug.Print Evaluate("Text(""" & arg1 & """
+ 1,""" & arg2 & """)")
"Text(""" & arg1 & """ + 1,""" & arg2 & """)"
この部分は実行時には、
"Text("2020/1/5" + 1,"yyyy/mm/dd")"
このよになります。
ワークシートで=からそのまま入れた結果と同じになります。
Evaluateメソッドの最後に
もちろん、セルにその数式を入れてセル値を取得する事で代替え可能ではありますが、Evaluateを使えば簡単に実現できます。
シート設計およびVBAロジックを適切に作成すれば、Evaluateを使う必要性はあまりないはずです。
とはいえ、有効な代替え手段がない以上、少なくともEvaluateメソッドの存在は把握しておいた方が良いでしょう。
文字列でのセル参照と文字列の計算式について(Evaluate,INDIRECT)
同じテーマ「マクロVBA技術解説」の記事
シングルクォートの削除とコピー(PrefixCharacter)
空文字列の扱い方と処理速度について(""とvbNullString)
VBAにおける変数のメモリアドレスについて
Evaluateメソッド(文字列の数式を実行します)
Rangeオブジェクトの論理演算(差集合と排他的論理和)
VBAで写真の撮影日時や音楽動画の長さを取得する
VBAでWindowsMediaPlayerを使い動画再生する
VBAでWEBカメラ操作する
VBAで電光掲示板を作成
ユーザーに絶対に停止させたくない場合のVBA設定
列幅・行高をDPI取得しピクセルで指定する
新着記事NEW ・・・新着記事一覧を見る
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBA技術解説
- Evaluateメソッド(文字列の数式を実行します)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
