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 | 指定した日付の年を算出します。 |
