検索

キーワード


目次

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

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

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。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

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事