VBAで時刻データを扱っていると、次のようなことはありませんか?
- 文字列を時刻として扱いたい
- 時間計算をしたい
- 入力された時刻データを変換したい
このような場合は、TimeValue関数を使うことで解決できます。
文字列形式の時刻を、VBAで扱える時刻データへ変換できる関数です。
この記事では、TimeValue関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 文字列を時刻へ変換できる
- 時間計算ができる
- 時刻データの扱い方が分かる
TimeValue関数とは?
TimeValue関数は、文字列で表された時刻をDate型の時刻データへ変換する関数です。
例えば次のような文字列を時刻へ変換できます。
"10:30"
"15:45:20"
"08:00"
基本:TimeValue関数の使い方
基本構文はこちらです。
TimeValue(時刻文字列)
基本例
MsgBox TimeValue("10:30")
→ 10:30:00
変数へ格納する
Dim myTime As Date
myTime = TimeValue("14:25:30")
MsgBox myTime
セルの値を時刻へ変換する
Dim myTime As Date
myTime = TimeValue(Range("A1").Value)
MsgBox myTime
セルに入力された時刻文字列を変換できます。
時間計算で使う
1時間後を求める例です。
Dim myTime As Date
myTime = TimeValue("10:00")
MsgBox myTime + TimeSerial(1, 0, 0)
→ 11:00:00
時刻比較で使う
If Time >= TimeValue("09:00") Then
MsgBox "営業開始時間です"
End If
Hour・Minute・Secondと組み合わせる
Dim myTime As Date
myTime = TimeValue("13:45:30")
MsgBox Hour(myTime)
MsgBox Minute(myTime)
MsgBox Second(myTime)
TimeSerialとの違い
| 関数 | 内容 |
|---|---|
| TimeValue | 文字列から時刻へ変換 |
| TimeSerial | 時・分・秒から時刻作成 |
Format関数と組み合わせる
MsgBox Format(TimeValue("9:5"), "hh:nn:ss")
→ 09:05:00
実務での活用例
- 勤務時間管理
- 出退勤データ処理
- ログ分析
- 営業時間判定
時間管理システムでは非常によく使われます。
注意点
① 時刻形式である必要がある
TimeValue("ABC")
→ エラー
② 戻り値はDate型
内部的には日時データとして扱われます。
③ 日付部分は無視される
TimeValue("2024/01/01 10:30")
→ 10:30:00
安全な書き方(おすすめ)
Dim val As Variant
val = Range("A1").Value
If IsDate(val) Then
MsgBox TimeValue(val)
Else
MsgBox "時刻ではありません"
End If
よくあるエラーと対処法
① 型が一致しません
時刻として認識できない文字列の可能性があります。
② 結果が表示されない
セルの表示形式を確認してください。
③ 日付まで表示される
Format関数で表示形式を指定してください。
Format(TimeValue("10:30"), "hh:nn:ss")
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- TimeValueは文字列を時刻へ変換する関数
- 戻り値はDate型
- 時間計算や比較処理で活躍
- TimeSerialとの使い分けが重要
TimeValue関数を使いこなせるようになると、時刻データの処理が非常に簡単になります。
勤務管理やログ分析など実務でも活躍するため、ぜひマスターしておきましょう。

コメント