皆さんは、VBAで時間の計算をする方法を知っていますか?
「時」「分」「秒」の取得方法、加算/減算など計算方法も合わせておくと便利です!
そこで今回は、
・時・分・秒の取得方法
といった基礎的なことから、
・現在の時間を取得する方法
・時・分・秒の加算/減算方法
・時間の差分計算方法
・合わせて覚えておくと便利な日付の計算方法
といった応用的な方法まで、徹底的に解説します!
時刻を取得する方法
はじめに、時間を取得する方法について解説します。
「時」を取得する方法
まずは、「時」を取得する方法について解説します。
Hour関数を使えば、次のように簡単に「時」を取得できます。
使い方:
Hour(日時 or 時間)
サンプルコード:
Sub Test1()
Debug.Print Hour("12:15:30")
End Sub
実行結果:
12
このように、簡単に「時」を取得することができます。
「分」を取得する方法
次は、「分」を取得する方法について解説します。
Minute関数を使えば、次のように簡単に「分」を取得できます。
使い方:
Minute(日時 or 時間)
サンプルコード:
Sub Test2()
Debug.Print Minute("12:15:30")
End Sub
実行結果:
15
このように、簡単に「分」を取得することができます。
「秒」を取得する方法
次は、「秒」を取得する方法について解説します。
Second関数を使えば、次のように簡単に「秒」を取得できます。
使い方:
Second(日時 or 時間)
サンプルコード:
Sub Test3()
Debug.Print Second("12:15:30")
End Sub
実行結果:
30
このように、簡単に「秒」を取得することができます。
「時・分・秒」を取得する方法
次は、「時・分・秒」を取得する方法について解説します。
TimeValue関数を使えば、次のように簡単に「時・分・秒」を取得できます。
使い方:
TimeValue(日時 or 時間)
サンプルコード:
Sub Test4()
Debug.Print TimeValue("2018/10/10 12:15:30")
End Sub
実行結果:
12:15:30
このように、簡単に「時・分・秒」を取得することができます。
現在の時刻を取得する方法
次に、現在の時刻を取得する方法について解説します。
Now関数を使えば、簡単に現在の日時を取得することができます。
時刻のみつかいたい場合は、Format関数とあわせて次のように使い方を覚えておくのがおすすめです!
サンプルコード:
Sub Test5()
Debug.Print Format(Now(), "HH") '時
Debug.Print Format(Now(), "MM") '分
Debug.Print Format(Now(), "SS") '秒
Debug.Print Format(Now(), "HH:MM:SS") '時分秒
Debug.Print Format(Now(), "HH時MM分SS秒") '時分秒
End Sub
実行結果例:
12 15 30 12:15:30 12時15分30秒
このように、簡単に「現在の時刻」を取得することができます。
Format関数は表示形式を自由に変えることができるので、あわせて覚えておくと便利です!
時間を加算・減算するためのDateAddの使い方
ここまで時間の取得方法について解説してきましたが、取得した時間を計算するケースも多いですよね。
そのため、加算・減算方法を覚えておくのがおすすめです!
DataAdd関数を使えば、次のように簡単に加算/減算することができます。
使い方:
DateAdd(計算元の日時, 加算/減算する数値, 日時)
使い方補足:
・計算元の日時:h:時・m:分・s:秒
・加算/減算する数値:プラスの値で加算、マイナスの値で減算
サンプルコード:
Sub Test6()
'現在の時刻を取得
Dim nowTime as Date
nowTime = Now()
Debug.Print "現在の時刻:" & nowTime
'2時間後の時刻を取得
Dim addTime as Date
addTime = DateAdd("h",2,nowTime)
Debug.Print "加算後の時刻:" & addTime
End Sub
実行結果:
現在の時刻:2018/10/23 10:44:30 加算後の時刻:2018/10/23 12:44:30
この例では、「現在の時刻に2時間増やした時間」を計算する処理を書いています。
このように、簡単に計算することができるので、覚えておくのがおすすめです!
時間の差分を計算するためのDateDiff関数の使い方
次に、時間の差分を計算するためのDateDiff関数の使い方について解説します。
DateDiff関数を使えば、次のように簡単に時間の差を計算することができます。
使い方:
DateDiff(時・分・秒の指定, 比較する時間1, 比較する時間2)
「時・分・秒の指定」にそれぞれ、「h」「n」「s」を指定することで時・分・秒で使いたい差分を計算することができます。
サンプルコード:
Sub Test7()
Dim startDate As Date
Dim endDate As Date
startDate = "2018/10/10 12:00:00"
endDate = "2018/10/10 18:30:50"
'差を表示
Debug.Print "時分秒の差分は、それぞれ以下のとおりです。"
Debug.Print "--------------------------------------------"
Debug.Print DateDiff("h", startDate, endDate) & "時間"
Debug.Print DateDiff("n", startDate, endDate) & "分"
Debug.Print DateDiff("s", startDate, endDate) & "秒"
Debug.Print "--------------------------------------------"
End Sub
実行結果:
時分秒の差分は、それぞれ以下のとおりです。 -------------------------------------------- 6時間 390分 23450秒 --------------------------------------------
このように、差分を簡単に計算することができます。
時間の差分を計算したいときは、DateDiff関数を使うのがおすすめです!
日付を使った計算方法をまとめて知りたい方へ
ここまで時間の計算方法について解説してきましたが、日付もあわせて計算に使うケースは多いですよね。
そのため、日付の取得・計算方法などについても合わせて覚えておくのがおすすめです!
以下で詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、時間を取得・加算/減算する方法について解説しました。
Excelではスケジュール管理表、タスク管理表など時間を使って表示・計算するケースも多いです。
使い方も簡単なので、ぜひ使ってみてくださいね!






