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の違い
項目 | TimeSerial | TimeValue |
---|---|---|
入力形式 | 数値(整数:時・分・秒) | 文字列(”14:30:00″など) |
エラー耐性 | 不正な数値に強い | 曖昧な書式だとエラーになりやすい |
応用のしやすさ | 変数での制御向き | フォーム入力からの処理向き |
実務での使用例
- 時刻の入力フォームから値を受け取り、タイムスタンプを生成する
- 複数のセルに分けて入力された時刻情報を、統一した形式に変換して保存
- ある時間を境に処理を分岐するための条件式に活用
まとめ|時刻値の生成は TimeSerial と TimeValue を使い分ける
Excel VBAで時刻値を扱うには、入力形式や用途に応じて TimeSerial
と TimeValue
を使い分けることが重要です。
- 数値から生成したい場合は
TimeSerial
を使うのが確実 - 文字列形式から変換したい場合は
TimeValue
が便利 - エラーを避けるためには、事前に
IsDate
などでの妥当性チェックも推奨
正確な時刻管理は、ログ処理・スケジュール管理・データ処理のすべてにおいて欠かせません。
本記事の方法を用いて、確実に時刻を組み立てるVBA処理を習得しておきましょう。