スライドショー

【ExcelVBA】時間を計算するための取得・計算方法を徹底解説!

皆さんは、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関数を使うのがおすすめです!

日付を使った計算方法をまとめて知りたい方へ

ここまで時間の計算方法について解説してきましたが、日付もあわせて計算に使うケースは多いですよね。

そのため、日付の取得・計算方法などについても合わせて覚えておくのがおすすめです!

以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】日付を扱う方法(取得、書式変換、比較、計算、チェック)
更新日 : 2019年4月21日

まとめ

今回は、時間を取得・加算/減算する方法について解説しました。

Excelではスケジュール管理表、タスク管理表など時間を使って表示・計算するケースも多いです。

使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説