VBAでセルに「表示されている通りの値」を取得する方法【.Valueと.Textの違い】

目次

概要

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スクリプトの作成が可能となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次