目次
概要
Excel VBAでは、セルの値を取得する際に .Value
と .Text
のどちらを使うべきか迷うことがあります。
見た目と一致する「表示形式込みの値」を取得したい場合、.Value
を使用しても目的の通りにはならないことがあります。
本記事では、セルに表示されているとおりの形式で値を取得する方法と、.Value
と .Text
の違いについて、実例を交えて丁寧に解説いたします。
サンプルコード
Sub ShowCellValues()
MsgBox Range("C5").Value ' 実際の値(内部値)を取得
MsgBox Range("C5").Text ' 表示されている値(書式付き)を取得
End Sub
コード解説
.Value
プロパティ
- 数値や日付の 実際の値(内部データ) を取得します。
- 例:セルに「2025/08/07」と表示されていても、
.Value
では2025/08/07
(Date型)や45128
(日付シリアル値)として取得される場合があります。
.Text
プロパティ
- セルに**実際に表示されている文字列(書式付き)**を取得します。
- セルの表示形式が「¥#,##0」で「¥1,000」と表示されている場合、
.Text
を使うことで「¥1,000」がそのまま取得できます。
注意点
.Text
を使用するには、対象セルが画面上で表示可能な状態にある必要があります(非表示や範囲外の場合、意図した結果が得られないことがあります)。.Value
は、データ処理や計算に適しており、.Text
は見た目をそのまま取得したい用途に向いています。.Text
の戻り値は常に文字列(String)です。
応用例
- 金額や日付の表示形式をそのままレポートに転記したいとき
- 印刷用の出力ファイルをVBAで作成する際
- 表示通りの値をPDFやCSV形式に変換したい場面
まとめ
本記事では、Excel VBAでセルに表示されている値を取得する際の .Value
と .Text
の違いについて解説いたしました。
.Value
:内部値(処理用).Text
:表示値(見た目重視)
目的に応じてこれらを使い分けることで、より柔軟なVBAスクリプトの作成が可能となります。