DateAdd関数
DateAdd関数は、VBA関数の中で日付・時刻関数に分類される関数です。
目次
DateAdd関数とは
DateAdd関数は、指定された時間間隔を加算した日付をバリアント型 (内部処理形式 String の Variant) の値で返します。
構文 | DateAdd(interval, number, date) | |
---|---|---|
引数 | 省略 | 説明 |
interval | × | 追加する時間間隔を表す文字列式を指定します。 |
number | × | 追加する時間間隔の数を表す数式を指定します。将来の日時を取得するには正の数を指定します。過去の日時を取得するには負の数を指定します。 |
date | × | 時間間隔を追加する日付を表すバリアント型 (内部処理形式 Date の Variant) の値またはリテラル文字列を指定します。 |
引数interval
設定値 | 説明 |
---|---|
yyyy | yyyy |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
DateAdd 関数を使うと、ある日付に対して指定した時間間隔を、加えたり引いたりすることができます。たとえば、現在から 30 日後の日付や、現在から 45 分後の時刻などを計算できます。名前付き引数 date に日数を加えるには、年間通算日 ("y")、日 ("d")、週日 ("w") のいずれかを指定します。DateAdd 関数が無効な日付を返すことはありません。次の例では、31-Jan-95 の日付に 1 か月を加えています。
DateAdd("m", 1, "31-Jan-95")
この場合、31-Feb-95 ではなく、28-Feb-95 が返されます。名前付き引数 date が 31-Jan-96 であれば、1996 年は閏年なので 29-Feb-96 が返されます。計算の結果、日付が西暦 100 年以前になる場合 (名前付き引数 date に指定した年よりも大きな年を引いた場合) は、エラーが発生します。名前付き引数 number に指定した値が長整数型 (Long) でない場合は、最も近い整数値に丸められてから評価されます。
DateAdd の戻り値の書式は、引数 date に指定する日付の書式ではなく、[コントロール パネル] の設定によって決まります。
Calendar プロパティの設定がグレゴリオ暦の場合、引数 date にはグレゴリオ暦で表される日付を指定する必要があります。Calendar プロパティの設定が回教暦の場合、引数 date には回教暦で表される日付を指定する必要があります。月の名前として数値以外の名称が使われている場合、この名前は現在の Calendar プロパティの設定と一致する必要があります。月の名前と Calendar プロパティの設定を競合しないようにするには、短い日付形式の数値を使って日付を表すようにします。
DateAdd関数のサンプルコード
次の例は、ユーザーに日付とそれに加算する月数の入力を求めた後、DateAdd 関数を使って加算後の日付を表示します。
Sub sample()
Dim FirstDate As Date ' 変数を宣言します。
Dim IntervalType As String
Dim Number As Integer
Dim Msg
IntervalType = "m" ' "m" によって追加する時間間隔として、月を指定します。
FirstDate = InputBox("日付を入力してください。")
Number = InputBox("加算する月数を入力してください。")
Msg = "新しい日付: " & DateAdd(IntervalType, Number, FirstDate)
MsgBox Msg
End Sub
実行結果
解説
日付・時刻関数一覧
関数名 | 内容 |
---|---|
Date | 現在のシステム日付を算出します。 |
DateAdd | 指定した期間を加えた値を算出します。 |
DateDiff | 指定した時間単位で、2つの日付の差を算出します。 |
DatePart | 日付の指定した部分を算出します。 |
DateSerial | 指定した年月日に対応するバリアント型の値を算出します。 |
DateValue | 日付を表すバリアント型の値を算出します。 |
Day | 指定した日付から、日を表す1~31までの値を算出します。 |
Hour | 指定した時刻から、時間を表す0~23の値を算出します。 |
Minute | 指定した時刻から、分を表す0~59の値を算出します。 |
Month | 指定した日付から、月を表す1~12までの値を算出します。 |
Now | 現在のシステム日付と時刻を算出します。 |
Second | 指定した時刻から、秒を表す0~59の値を算出します。 |
Time | 現在のシステム時刻を算出します。 |
Timer | 午前0時から経過した秒数を算出します。 |
TimeSerial | 指定した時分秒をバリアント型の値で算出します。 |
TimeValue | 時刻をバリアント型の値で取得します。 |
Weekday | 指定した日付の曜日を算出します。 |
Year | 指定した日付の年を算出します。 |