Excel
ExcelVBA
シリアル値

VBAでシリアル値(日付、時間)を扱う時の注意点

More than 1 year has passed since last update.

VBAでシリアル値を扱う場合、格納する変数の型によって出力が異なる。

 ・String型:日時がそのまま文字列として格納される
 ・Double型:シリアル値が小数以下まで格納される(日付+時間の値)
 ・Long型 :シリアル値が整数として格納される(日付値)

Integer型だとオーバーフローする。

※シリアル値:1日を1とした値。小数以下は時間を表す。

qiita1.jpg

vba

Sub test()

  Dim timeStr As String
  Dim timeDbl As Double
  Dim timeLng As Long

  timeStr = Range("B2").Value
  timeDbl = Range("B2").Value
  timeLng = Range("B2").Value

  Debug.Print "timeStr", timeStr
  Debug.Print "timeDbl", timeDbl
  Debug.Print "timeLng", timeLng

End Sub

出力結果

timeStr       2017/01/01 12:20:15
timeDbl        42736.5140625 
timeLng        42737