小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

ExcelVBAでのValueとValue2の違い

デバックでウォッチウインドウからActiveCellのプロパティを見るとValueとValue2があります。
ValueとValue2の違いは何かなとまず思うでしょう・・・調べてみました。

Value2 プロパティと Value プロパティの唯一の違いは、Value2 プロパティでは通貨型 (Currency) および日付型 (Date) のデータを使用しないことです。倍精度浮動小数点数型 (Double) を使用して、これらのデータ型を浮動小数点数の形式にした値を返すことができます。

http://msdn.microsoft.com/ja-jp/library/cc391692.aspx

サンプル

Sub Test()
Dim dtmDate As Date
  dtmDate = Now

  ActiveCell.Value = dtmDate
  'セルでの表示 2009/1/14  20:17:33
  'ウォッチウィンドウでの表示 2009/1/14  20:17:33

  ActiveCell.Offset(1).Value2 = dtmDate   
  'セルでの表示 39827.8455208333
  'ウォッチウィンドウでの表示 39827.8455208333

  ActiveCell.Offset(2).Value2 = DateValue(dtmDate) 
  'セルでの表示 2009/1/14
  'ウォッチウィンドウでの表示 39827

End Sub

ちなみに、Date型のデータにDateValue関数をかますと面白い現象になる。
Value2は、日付型 (Date) のデータを使用しないと言いながら、セルには2009/1/14と表示される。
しかし、内部データ(ウォッチウィンドウでの表示)は39827なのです。