.Value 、 .Text - Excelマクロ・VBA

昨日の続きです。

「式」と「戻り値」、「値」 - Excelマクロ・VBA
.Valueで値を設定したあと、参照元セルの値を変更すると? - Excelマクロ・VBA
.Value, .Formula, .FormulaR1C1 - Excelマクロ・VBA

今日も、.Valueの親戚をご紹介。
.Text です。

.Textは、「そのセルに、どう表示されているか」を教えてくれます。
得られる情報は、「そのセルに入っている値は何か」ではありません。
微妙に、ニュアンスが違います。

新しいシートを作り、セルA1に「2012/3/6」、セルA2に「2012年3月6日」と記入してみてください。

そして、マクロについて調べる前に、ちょっと確認。
以下の要領で、セルA1、セルA2について、セルの書式を調べてみましょう。
対象セルを右クリックして「セルの書式設定」を確認してみましょう。
1155_1

すると、セル「A1」の書式は「日付」、セル「A2」の書式は「ユーザー定義型」となっていることが分かります。
1155_2
1155_3

このとき、セル「A1」、「A2」に入っている値は同じなのですが、表示されるときに、違う書式で表示されている、という状態です。
つまり、セルに入っている「値」は同じでも、表示されている「テキスト」は違う、という状態。

さてさて。
それでは、 .Value と .Text について比較するため、以下のマクロを実行してみます。

Sub hoge()  
  Debug.Print Range("A1").Value  
  Debug.Print Range("A2").Value  
  Debug.Print Range("A1").Text  
  Debug.Print Range("A2").Text  

  If Range("A1").Value = Range("A2").Value Then  
   Debug.Print ".Value は同じです"  
  Else  
   Debug.Print ".Value は違います"  
  End If  

  If Range("A1").Text = Range("A2").Text Then  
   Debug.Print ".text は同じです"  
  Else  
   Debug.Print ".text は違います"  
  End If  

End Sub

結果、以下のように出力されたことでしょう。
1155_4
もう、上記の結果を見れば、なにをか言わんや。

..って言うと、ちょっと乱暴すぎるかな。
もし、もっと詳しく解説してくれ!ということでしたら、どこが分からないか教えていただければまた解説しますね。

それでは、もうちょっと追加のテスト。
セルA3に、「=A2+1」と記入してみてください。すると、セルA2には、おそらく、「2012年3月7日」と表示されていると思います。
1155_5
では、その状態で、今度は以下のマクロを実行。

Sub fuga()  
 Debug.Print Range("A3").Formula  
 Debug.Print Range("A3").FormulaR1C1  
 Debug.Print Range("A3").Value  
 Debug.Print Range("A3").Text  
End Sub

結果は、以下のようになったはず。
1155_6

.Formula, .FormulaR1C1 については、.Value, .Formula, .FormulaR1C1 - Excelマクロ・VBAを参照してください。

このシリーズは、次回にも続きます。

公開日時: 2023/07/06 11:30