検索

キーワード


【Excel VBA】時間を操作する関数の紹介

  • 公開日:2021-05-10 11:36:02
  • 最終更新日:2021-05-01 21:25:17

こんにちは。IMMRです。ExcelVBAには、時間を操作する関数があります。

「頻繁に使われるもの」もあれば「あまり使われないもの」もありますがいくつか紹介していきます。


時間を操作をする関数


時間を操作をする関数① 【時・分・秒を取得する】

時刻から時、分、秒を取得するには、Hour関数Minute関数Second関数を使用します。

指定した時刻から時、分、秒のいずれかを取得します。

書き方 Hour(時刻)Minute(時刻)Second(時刻)


サンプルコード

Sub TEST1()
    MsgBox Hour("09:45:30")                                      ・・・1-1
    MsgBox Minute("09:45:30")                                     ・・・1-2
    MsgBox Second("09:45:30")                                     ・・・1-3
End Sub

1-1の実行結果は、「9」

1-2の実行結果は、「45」

1-3の実行結果は、「30」とメッセージボックスが表示されます。


時間を操作をする関数② 【現在の日付+時間・時間】

現在の日付を取得するにはNow関数Time関数を使用します。

表示をした時の日付+時間、時間を表示します。そのため、処理を実行した日時によって変わります。

書き方 NowTime ※設定値はありません。


サンプルコード

Sub TEST2()
    MsgBox Now                                          ・・・2-1
    MsgBox Time                                         ・・・2-2
End Sub


2-1の実行結果は、「処理を実行した日付+時間」 例:2021/04/20  20:15:40

2-2の実行結果は、「処理を実行した日付」例:20:15:40   とメッセージボックスが表示されます。


時間を操作をする関数③ 【2つの時間の間隔を取得】

指定した2つの時間から間隔を取得するにはDateDiff関数を使用します。

指定した2つの時間から間隔を取得して、設定した時間単位で時単位、分単位、単位を秒単位を表示します。

書き方 DateDiff(時間単位, 時間1, 時間2)


時間単位

設定値内容
h
n
s

※分は、mではなくnであることに注意


サンプルコード

Sub TEST3()
    MsgBox DateDiff("h", "09:50:30", "11:50:30")                           ・・・3-1
    MsgBox DateDiff("n", "09:50:30", "10:10:30")                           ・・・3-2
    MsgBox DateDiff("s", "09:50:30", "09:50:40")                           ・・・3-3
End Sub


3-1の実行結果は、「2

3-2の実行結果は、「20

3-3の実行結果は、「10とメッセージボックスが表示されます。


時間を操作をする関数④ 【加算・減算した日付を取得】

指定時間から加算・減算した時間を取得するにはDataAdd関数を使用します。

指定した時間から加算・減算した時間を表示します。加算するのは時、分、秒などがあります。

書き方 DataAdd(時間単位, 加算する数値, 時間)

※時間単位の詳細については、「時間を操作をする関数③ 【2つの時間の間隔を取得】」で説明したものと同じです。


サンプルコード

Sub TEST4()
    MsgBox DateAdd("h", 3, "08:30:15")                                  ・・・4-1
    MsgBox DateAdd("n", -40, "08:30:15")                                 ・・・4-2
    MsgBox DateAdd("s", 50, "08:30:15")                                  ・・・4-3
End Sub

3-1の実行結果は、「11:30:15

3-2の実行結果は、「7:50:15

3-3の実行結果は、「8:31:05とメッセージボックスが表示されます。


時間を操作をする関数⑤ 【時間の書式を変更する】

時間の書式を取得にはFormat関数を使用します。

時間の書式を変更しますが表示方法は記号で変わってきます。

書き方 Format(日付, 表示方法)


①表示方法(時間)

記号内容
h時(0~9の場合、頭に0が付かない)
hh時(0~9の場合、頭に0が付く)
n分(0~9の場合、頭に0が付かない)
nn分(0~9の場合、頭に0が付く)
s秒(0~9の場合、頭に0が付かない)
ss秒(0~9の場合、頭に0が付く)

※分は、mではなくnであることに注意


②表示方法(区切り)

記号内容
:時間の区切り
&(0~9の場合、頭に0が付かない)
@(0~9の場合、頭に0が付く)


サンプルコード① (時間偏)

Sub TEST5_1()
    MsgBox Format("09:45:20", "h")                                  ・・・5-1-1
    MsgBox Format("9:45:20", "hh")                                  ・・・5-1-2
    MsgBox Format("11:05:20", "n")                                  ・・・5-1-3
    MsgBox Format("11:5:20", "nn")                                  ・・・5-1-4
    MsgBox Format("11:45:02", "s")                                  ・・・5-1-5
    MsgBox Format("11:45:2", "ss")                                  ・・・5-1-6
End Sub

5-1-1の実行結果は、「9」

5-1-2の実行結果は、「09」

5-1-3の実行結果は、「5」

5-1-4の実行結果は、「05」

5-1-5の実行結果は、「2」

5-1-6の実行結果は、「02」とメッセージボックスが表示されます。


サンプルコード② (区切り偏) ※スペースの存在がわかるように前後に"*"を付与しています。

Sub TEST5_2()
    MsgBox "*" + Format("91530", "&&:&&:&&") + "*"                         ・・・5-2-1
    MsgBox "*" + Format("91530", "@@:@@:@@") + "*"                         ・・・5-2-2
End Sub

5-2-1の実行結果は、「*9:15:30*」

5-2-2の実行結果は、「* 9:15:30*」とメッセージボックスが表示されます。


今まで説明してきた(時間偏)(区切り偏)を結合して行うことも出来ます。

サンプルコード③ (結合偏)

Sub TEST5_3()
    MsgBox Format("9:5:1", "hh:nn:ss")                                ・・・5-3-1
    MsgBox Format("07:04:03", "h:n:s")                                ・・・5-3-2
    MsgBox Format("053022", "@@:@@:@@")                                ・・・5-3-3
End Sub


5-3-1の実行結果は、「09:05:01」

5-3-2の実行結果は、「7:4:3」

5-3-3の実行結果は、「05:30:22」 とメッセージボックスが表示されます。


【著者】

Imamura

今まではExcel VBAの開発をしてきました。
開発を主にしたものや他の業務の効率化を目指して行ったものさまざまです。
現在は、他のプログラミング言語に挑戦して、スキルアップを目指しています。

よく読まれている記事