「excel vba シリアル値取得」
といった検索で、時折アクセスがあります。
ここでは、セルに入力されている日付・時刻データのシリアル値を、Excel VBAで取得するコードをご紹介しましょう。
Rangeオブジェクトに用意されているValue2プロパティを使えば、
CDbl関数等による変換を行わなくても、シリアル値を直接取得できます。
Range.Value2プロパティを確認するサンプルマクロ
A1セルに日付データが入力されているワークシートがアクティブな状態で、以下のExcelマクロを実行してください。
MsgBox _
Range("A1").Value & vbCrLf & _
CDbl(Range("A1").Value) & vbCrLf & _
Range("A1").Value2
End Sub
Value2プロパティでシリアル値を取得するマクロの挙動
日付データ「2022/12/1」がA1セルに入力されているとき、上記のマクロを実行すると、
2022/12/01 44896 44896
がメッセージボックスに表示されます。
「2022/12/01」が、Range.Valueプロパティで取得したセルの値、次の「44896」は「2022/12/01」をCDbl関数で数値に変換した値、最後の「44896」がRange.Value2プロパティで取得したシリアル値です。
もちろんこのシリアル値は、N関数を使って取得できる値と同じです。
時刻データも含む場合の挙動
日時データ「2022/12/1 18:00」がA1セルに入力されているとき、上記のマクロを実行すると、
2022/12/01 18:00:00 44896.75 44896.75
がメッセージボックスに表示されます。
先ほどは日付データでしたからシリアル値は自然数でしたが、時刻データも含むため小数を含んだシリアル値になっています。
最終更新日時:2023-06-28 16:02
Home » Excel VBA Rangeオブジェクト » Excel VBAでシリアル値を取得する-Range.Value2プロパティ