Dim A
'年
A = DateAdd("yyyy", 1, "2020/01/01") '1年進める
A = DateAdd("yyyy", -1, "2020/01/01") '1年も戻す'月
A = DateAdd("m", 1, "2020/01/01") '1か月進める
A = DateAdd("m", -1, "2020/01/01") '1か月戻す'日
A = DateAdd("d", 1, "2020/01/01") '1日進める
A = DateAdd("d", -1, "2020/01/01") '1日戻す'週
A = DateAdd("ww", 1, "2020/01/01") '1週間進める
A = DateAdd("ww", -1, "2020/01/01") '1週間戻す
では、解説していきます。
VBAでDateAddを使って日付の加算や引き算をする
日付の加算や引き算をするには、『DateAdd』を使えばできます。
日付を1日進めたり、1か月戻したりができます。
日付の計算をする場合には、『DateAdd』を覚えておけばいいです。
使い方(DateAdd)
日付を進めたり、戻したりする『DateAdd』は次のように入力します。
『計算後の日付 = DateAdd(間隔, 増減量, 日付)』
間隔には、次の値が指定できます。
年:"yyyy"
月:"m"
日:"d"
週:"ww"
増減量には、『1』や『-1』などの数値を入力します。
日付には、日付型のデータもしくは、日付と認識できる文字列を入力します。
『年』を1年進める、戻す
日付の『年』を1年進めたり、戻すには、DateAddの引数に『"yyyy"』を指定します。
日付を1年進める
日付『2020/01/01』を1年進めてみます。
Sub TEST1()
Dim A, B
A = "2020/01/01"
'1年進める
B = DateAdd("yyyy", 1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2021/01/01』となりました。
日付が1年進みました。
日付を1年戻す
次に、日付『2020/01/01』を1年戻してみます。
Sub TEST2()
Dim A, B
A = "2020/01/01"
'1年戻す
B = DateAdd("yyyy", -1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2019/01/01』となりました。
日付が1年戻りました。
DateAddを使えば、簡単に日付の操作ができます。
『月』を1月進める、戻す
日付の『月』を1月進めたり、戻すには、DateAddの引数に『"m"』を指定します。
日付を1か月進める
日付『2020/01/01』を1か月進めてみます。
Sub TEST3()
Dim A, B
A = "2020/01/01"
'1か月進める
B = DateAdd("m", 1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2020/02/01』となりました。
日付が1か月進みました。
日付を1か月戻す
次に、日付『2020/01/01』を1か月戻してみます。
Sub TEST4()
Dim A, B
A = "2020/01/01"
'1か月戻す
B = DateAdd("m", -1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2019/12/01』となりました。
日付が1か月戻りました。
日付型のデータさえあれば、日付の操作は簡単です。
『日』を1日進める、戻す
日付の『日』を1日進めたり、戻すには、DateAddの引数に『"d"』を指定します。
日付を1日進める
日付『2020/01/01』を1日進めてみます。
Sub TEST5()
Dim A, B
A = "2020/01/01"
'1日進める
B = DateAdd("d", 1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2020/01/02』となりました。
日付が1日進みました。
日付を1日戻す
次に、日付『2020/01/01』を1日戻してみます。
Sub TEST6()
Dim A, B
A = "2020/01/01"
'1日戻す
B = DateAdd("d", -1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2019/12/31』となりました。
日付が1日戻りました。
日付の計算をする際は、DateAddを使えば簡単です。
『週』を1周進める、戻す
日付の『週』を1週間進めたり、戻すには、DateAddの引数に『"ww"』を指定します。
日付を1週間進める
日付『2020/01/01』を1週間進めてみます。
Sub TEST7()
Dim A, B
A = "2020/01/01"
'1週間進める
B = DateAdd("ww", 1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2020/01/08』となりました。
日付が1週間進みました。
日付を1週間戻す
次に、日付『2020/01/01』を1週間戻してみます。
Sub TEST8()
Dim A, B
A = "2020/01/01"
'1週間戻す
B = DateAdd("ww", -1, A)
MsgBox B
End Sub
実行してみます。
結果は、『2019/12/25』となりました。
日付が1週間戻りました。
1週間後や1週間前の日付を取得したい、といった場合でも、DateAddで簡単に取得できます。
日付の計算をするDateAddの実践例
日付の計算ができるDateAddの実践例について、ご紹介します。
すでに入力されている日付に対して、1日進めたいとか、1日戻したいといった場合に使えます。
セルに入力した日付を加算や引き算をする
セルに入力した日付に対して、日付の加算や引き算をするVBAコードを作成してみます。
Sub TEST9()
Dim A, B
A = Cells(1, 2) '日付取得
B = DateAdd("yyyy", Cells(5, 2), A) '年の増減を計算
B = DateAdd("m", Cells(6, 2), B) '月の増減を計算
B = DateAdd("d", Cells(7, 2), B) '日の増減を計算
Cells(2, 2) = B 'セルに値を入力
End Sub
セルに入力されている日付『2020/01/01』を加減算してみます。
まず、加減算するセルに年月日をそれぞれ『-1』『1』『-1』を入力します。
セルに加減算する年月日を入力
VBAコードをボタンをクリックして実行します。
ボタンにVBAコードが登録されています。
日付を加減算する
結果は、『2019/1/31』となりました。
元の日付『2020/01/01』から1年戻して、1か月進めて、1日戻せています。
DateAddを使えば、日付の計算は簡単です。
スピンボタンで日付の加算や引き算をする
ユーザーフォームのスピンボタンで日付の加算や引き算をしてみます。
ユーザーフォームで日付を扱うときに結構使えます。
テキストボックスに入力された日付を、年月日毎に日付を進めたり、戻したりするVBAコードです。
こちらのVBAコードは、『ユーザーフォームの中のコード』に記載します。
'初期値設定
Private Sub UserForm_Initialize()
TextBox1.Text = "2020/01/01"
End Sub
'スピンボタンアップ
Private Sub SpinButton1_SpinUp()
Dim A
A = TextBox1.Text
'1年進める
TextBox1.Text = DateAdd("yyyy", 1, A)
End Sub
'スピンボタンダウン
Private Sub SpinButton1_SpinDown()
Dim A
A = TextBox1.Text
'1年戻す
TextBox1.Text = DateAdd("yyyy", -1, A)
End Sub
'スピンボタンアップ
Private Sub SpinButton2_SpinUp()
Dim A
A = TextBox1.Text
'1か月進める
TextBox1.Text = DateAdd("m", 1, A)
End Sub
'スピンボタンダウン
Private Sub SpinButton2_SpinDown()
Dim A
A = TextBox1.Text
'1か月戻す
TextBox1.Text = DateAdd("m", -1, A)
End Sub
'スピンボタンアップ
Private Sub SpinButton3_SpinUp()
Dim A
A = TextBox1.Text
'1日進める
TextBox1.Text = DateAdd("d", 1, A)
End Sub
'スピンボタンダウン
Private Sub SpinButton3_SpinDown()
Dim A
A = TextBox1.Text
'1日戻す
TextBox1.Text = DateAdd("d", -1, A)
End Sub