大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで時間を1時間足したり、引いたりするのは、DateAddを使えばできます。DateAddは、時間の足し算や引き算をしたい場合に便利な関数です。具体的な例を交えて解説していきます。

はじめに

この記事では、時間の足し算や引き算ができるDateAddについて、ご紹介します。

DateAddを使えば、時間を1時間足したり、引いたりすることができます。

時間の足し算や引き算をする際には、DateAddを使ってみましょう。

では、時間の足し算や引き算について、解説していきます。

この記事で紹介すること

  • 時間の足し算や引き算をする方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードを記載しておきます。

VBAコードだけ確認したいという場合に、ご活用ください。

Dim A, B
A = "17:01:02"
B = DateAdd("h", 1, A) ' 1時間足す:18:01:02
B = DateAdd("h", -1, A) '1時間引く:16:01:02
B = DateAdd("n", 1, A) ' 1分足す :17:02:02
B = DateAdd("n", -1, A) '1分引く :17:00:02
B = DateAdd("s", 1, A) ' 1秒足す :17:01:03
B = DateAdd("s", -1, A) '1秒引く :17:01:01

では、解説していきまます。

VBAでDateAddを使って時間の足し算や引き算をする

時間の足し算や引き算をするのは、DateAddを使えばできます。

DateAddの使い方を、具体的なVBAコードを使って解説していきます。

使い方(DateAdd)

まず、DateAddへは、次のように入力します。

『計算結果 = DateAdd(間隔, 数値, 時間)』

間隔には、次の引数を入力することができます。

  • 時:"h"
  • 分:"n"
  • 秒:"s"

数値には、『1』や『-2』といった値を入力します。

『時』を1時間だけ足し算、引き算をする

では、時間に1時間足したり、引いたり、してしてみます。

時間を計算をするには、DateAddの引数に『"h"』を使います。

時間を1時間足す

1時間足すので、数値には『1』を入力します。

時間『"17:1:2"』に1時間足すVBAコードです。

Sub TEST1()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1時間足す
    B = DateAdd("h", 1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1時間足した結果

結果は、『18:01:02』となりました。

1時間だけ足されています。

時間を1時間引く

次は、1時間引くので、数値には『-1』を入力します。

時間『"17:1:2"』から1時間引くVBAコードです。

Sub TEST2()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1時間引く
    B = DateAdd("h", -1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1時間引いた結果

結果は、『16:01:02』となりました。

1時間だけ引き算されました。

『分』を1分だけ足し算、引き算をする

つづいて、時間を1分足したり、引いたりしてしてみます。

『分』を計算するには、DateAddの引数に『"n"』を使います。

時間を1分足す

1分足すので、数値には『1』を入力します。

時間『"17:1:2"』に1分足すVBAコードです。

Sub TEST3()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1分足す
    B = DateAdd("n", 1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1分足した結果

結果は、『17:02:02』となりました。

1分だけ足し算されています。

時間を1分引く

次は、1分引くので、数値には『-1』を入力します。

時間『"17:1:2"』から1分引くVBAコードです。

Sub TEST4()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1分引く
    B = DateAdd("n", -1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1分引いた結果

結果は、『17:00:02』となりました。

1分だけ引き算されました。

『秒』を1秒だけ足し算、引き算をする

次は、時間を1秒だけ足したり、引いたりしてしてみます。

『秒』を計算するには、DateAddの引数に『"s"』を使います。

時間を1秒足す

1秒足すので、数値には『1』を入力します。

時間『"17:1:2"』に1秒足すVBAコードです。

Sub TEST5()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1秒足す
    B = DateAdd("s", 1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1秒足した結果

結果は、『17:01:03』となりました。

1秒だけ足されました。

時間を1秒引く

次は、1秒引くので、数値には『-1』を入力します。

時間『"17:1:2"』から1秒引くVBAコードです。

Sub TEST6()
    
    Dim A, B
    
    A = "17:1:2"
    
    '1秒引く
    B = DateAdd("s", -1, A)
    
    MsgBox B
    
End Sub

実行してみます。

DateAddで時間を1秒引いた結果

結果は、『17:01:01』となりました。

1秒だけ引き算されました。

DateAddを使って日付をまたぐ場合

DateAddを使って時間を、足したり引いたりした場合に、日付をまたぐ場合は、注意が必要です。

ちょっとやってみます。

1時間足して日付をまたぐ

DateAddで、時間を1時間足して、日付がをまたいでみます。

時間『"23:01:02"』をDateAddで1時間足すVBAコードです。

Sub TEST7()
    
    Dim A, B
    
    A = "23:1:2"
    
    '1時間足す
    B = DateAdd("h", 1, A)
    
    MsgBox B
    
End Sub

実行してみます。

日付をまたいだ結果

DateAddで時間を1時間足して日付をまたいだ結果

結果は、『1899/12/31 0:01:02』となりました。

なにこの結果、となります。

これは、24時間を超えたので、日付が『1』となったからです。

エクセルの日付が『1』というのは、『1899/12/31』となっているので、この日付が表示されたということです。

でも、欲しいのは、『0:01:02』だけです。

時間だけ取得するには、TimeValueを使えばできます。

TimerValueで時間だけ取得する

DateAddで日付をまたいだ時、つまり、24時間を超えたときに、時間だけを取得したいときは、TimeValueを使えばできます。

時間『"23:01:02"』をDateAddで1時間足して、時間だけを取得するVBAコードです。

Sub TEST8()
  
    Dim A, B, C
    
    A = "23:1:2"
    
    '1時間足す
    B = DateAdd("h", 1, A)
    
    '時間だけを取得
    C = TimeValue(B)
    
    MsgBox C
    
End Sub

実行してみます。

日付をまたいで時間だけ取得

DateAddで時間を1時間足して日付をまたいだ時に、時間だけを取得した結果

結果は、『0:01:02』となりました。

日付をまたいでも、時間だけを取得できています。

Textで24時間以上を表示する

24時間以上の時間を表示したい場合は、「Text関数」が使えます。

1時間足して、24時間以上の時間を表示してみます。

Sub TEST9()
  
    Dim A, B, C
    
    A = "23:1:2"
    
    '1時間足す
    B = DateAdd("h", 1, A)
    
    '24時間を表示する
    C = Application.Text(B, "[h]:mm:ss")
    
    MsgBox C
    
End Sub

実行すると、次のようになります。

24時間以上を表示

24時間以上を表示できました

「24:01:02」となりました。

24時間以上を表示できています。

ただ、変数が「文字列」となってしまうので、時間の計算ができなくなってしまいます。

なので、「表示」のみに使って、変数は「日付型」のままにしておきましょう。

時間の計算をするDateAddの実践例

時間を取得するDateAddの実践例をご紹介します。

セルに入力した時間の足し算や引き算をする

セルに入力した時間から、『時』や『分』を足したり引いたりして、時間を計算する、というVBAコードです。

Sub TEST10()
    
    Dim A, B
    A = Cells(1, 2) 'セルの時間を取得
    B = DateAdd("h", Cells(4, 1), A) '『時』を計算
    B = DateAdd("n", Cells(4, 2), B) '『分』を計算
    B = DateAdd("s", Cells(4, 3), B) '『秒』を計算
    Cells(2, 2) = B 'セルに入力
    '表示形式をhh:mm:ssに変換
    Cells(2, 2).NumberFormatLocal = "hh:mm:ss"
    
End Sub

セルに元の時間と、足したり引いたりしたい、『時』や『分』を入力します。

セルに時間を入力

セルに元の時間と計算させる時や分を入力する

VBAコードを実行して、時間を計算してみます。

セルの値から時間を計算

セルに入力された時や分から時間を計算した結果

結果は、『18:00:03』となりました。

セルに入力された時や分から時間を計算できました。

スピンボタンで時間の足し算や引き算をする

ユーザーフォームのスピンボタンで時間を足したり引いたりするVBAコードです。

ユーザーフォームの中のコードに記載します。

'スピンアップで実行
Private Sub SpinButton1_SpinUp()
    '1時間足す
    TextBox1.Text = DateAdd("h", 1, TextBox1.Text)
End Sub

'スピンダウンで実行
Private Sub SpinButton1_SpinDown()
    '1時間引く
    TextBox1.Text = DateAdd("h", -1, TextBox1.Text)
End Sub

'スピンアップで実行
Private Sub SpinButton2_SpinUp()
    '1分足す
    TextBox1.Text = DateAdd("n", 1, TextBox1.Text)
End Sub

'スピンダウンで実行
Private Sub SpinButton2_SpinDown()
    '1分引く
    TextBox1.Text = DateAdd("n", -1, TextBox1.Text)
End Sub

'スピンアップで実行
Private Sub SpinButton3_SpinUp()
    '1秒足す
    TextBox1.Text = DateAdd("s", 1, TextBox1.Text)
End Sub

'スピンダウンで実行
Private Sub SpinButton3_SpinDown()
    '1秒引く
    TextBox1.Text = DateAdd("s", -1, TextBox1.Text)
End Sub

時間『17:01:02』を入力します。

時間を入力する

ユーザーフォーム中のテキストボックスに時間を入力する

1時間足してみます。

1時間足す

スピンボタンで1時間足した結果

1時間足されて、『18:01:02』となりました。

1分引いてみます。

1分引く

スピンボタンで1分引いた結果

1分引き算されて、『18:00:02』となりました。

1秒足してみます。

1秒足す

スピンボタンで1秒足した結果

1秒足されて、『18:00:03』となりました。

というような具合です。

時間を足したり引いたりなどの計算をしたい場合は、DateAddが便利です。

おわりに

この記事では、時間の足し算や引き算ができるDateAddについて、ご紹介しました。

DateAddを使えば、時間を1時間足したり、引いたりすることができます。

時間の足し算や引き算をする際には、DateAddを使ってみましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す