【VBA入門】時・分・秒から時刻を作成する方法|TimeSerialとTimeValueの違いと使い方

Excel VBAでは、「時・分・秒」それぞれの値をもとに、正確な時刻(Time型)を構築することが可能です。
この記事では、TimeSerial 関数と TimeValue 関数を用いた時刻作成方法の基本と違い
を、丁寧にご紹介いたします。


目次

方法①:TimeSerial関数で時刻を作成する

TimeSerial(hour, minute, second) は、時・分・秒の数値から正確な時刻値を返す関数です。

VBAコード例:

Sub CreateTimeByTimeSerial()
    Dim outputTime As Date
    outputTime = TimeSerial(Range("C2").Value, Range("D2").Value, Range("E2").Value)
    MsgBox "作成された時刻:" & outputTime
End Sub
  • Range("C2").Value:時(例:14)
  • Range("D2").Value:分(例:30)
  • Range("E2").Value:秒(例:15)

このように TimeSerial(14, 30, 15) で「14:30:15」が得られます。


方法②:TimeValue関数で時刻を文字列から変換

TimeValue("14:30:15") のように、時刻形式の文字列を受け取って、時刻値に変換する方法もあります。

VBAコード例:

Sub CreateTimeByTimeValue()
    Dim timeString As String
    timeString = Range("G2").Value & ":" & Range("H2").Value & ":" & Range("I2").Value
    MsgBox "作成された時刻:" & TimeValue(timeString)
End Sub

この例では、たとえば G2=14、H2=30、I2=15 のとき、「14:30:15」という文字列が組み立てられ、それを TimeValue で変換します。


TimeSerialとTimeValueの違い

項目TimeSerialTimeValue
入力形式数値(整数:時・分・秒)文字列(”14:30:00″など)
エラー耐性不正な数値に強い曖昧な書式だとエラーになりやすい
応用のしやすさ変数での制御向きフォーム入力からの処理向き

実務での使用例

  • 時刻の入力フォームから値を受け取り、タイムスタンプを生成する
  • 複数のセルに分けて入力された時刻情報を、統一した形式に変換して保存
  • ある時間を境に処理を分岐するための条件式に活用

まとめ|時刻値の生成は TimeSerial と TimeValue を使い分ける

Excel VBAで時刻値を扱うには、入力形式や用途に応じて TimeSerialTimeValue を使い分けることが重要です。

  • 数値から生成したい場合TimeSerial を使うのが確実
  • 文字列形式から変換したい場合TimeValue が便利
  • エラーを避けるためには、事前に IsDate などでの妥当性チェックも推奨

正確な時刻管理は、ログ処理・スケジュール管理・データ処理のすべてにおいて欠かせません。
本記事の方法を用いて、確実に時刻を組み立てるVBA処理を習得しておきましょう。

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

この記事を書いた人

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

目次