【ExcelVBA・マクロ】TimeValue関数の使い方|文字列を時刻データに変換する方法【コピペOK】

TimeValue関数の使い方 ExcelVBA

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関数を使いこなせるようになると、時刻データの処理が非常に簡単になります。
勤務管理やログ分析など実務でも活躍するため、ぜひマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました