「今日から 500 日後は何年何月何曜日?」と訊かれて、ぱっと答えらえる人はそうそういないはずです。答えたら変な人です。コンピューターマンです。でもそんなことを訊く人もやっぱり変ですよね。あ、そうそう、このまえトランプ大統領が、某国の独裁者のことを「ロケットマン」て呼んでましたよねー。こばと、おかしくてお腹を抱えて笑っちゃったー ...... 話がどこまでも脱線しそうなので、おしゃべりはこのぐらいにして、日付に時間を加える関数 についてお勉強しましょー。
DateAdd関数で日付に時間を加えます
DateAdd関数 は
と記述して、[日付] に [設定値] で指定した型の [加算時間] を加えます。たとえば [設定値] に「年」を表す "yyyy" を指定して
とすると、現在から 5 年後の日付を得ることになります。[設定値] には次のような種類がありますよ。
設定値 | 単位 | 設定値 | 単位 |
---|---|---|---|
yyyy | 年 | q | 四半期 |
m | 月 | y | 年間通算日 |
d | 日 | w | 週日 |
ww | 週 | h | 時 |
n | 分 | s | 秒 |
まあ、なにはともあれマクロを作ってみましょー。
今日から x 日後の日付を返します
ダイアログボックスに加える日数 x の入力を促して、x 日後の日付を返すマクロです。
Sub DayAdd()
Dim myday As Date
Dim x As Integer
Dim mymsg As String
mymsg = "日数を入力してください"
x = Application.InputBox(prompt:=mymsg, Type:=1)
myday = DateAdd("d", x, Date)
MsgBox "今日から" & x & "日後の日付は" & myday & "です"
End Sub
たとえば 2017 年 9 月 23 日にこのマクロを実行して、500 という数字を入れると、
というメッセージが表示されます。
DateAdd関数 をワークシート関数として使えるようにします
DateAdd のような関数は Excel関数にはないので、DateAdd関数の機能をそのまま引き継いだ Function Macro(ユーザー定義関数)をつくっておきます。
DADD = DATEADD(mytype, x, mydate)
End Function
この関数は
という形で用います。DateAdd関数とほぼ同じですが、[設定値] をダブルクォーテーション ("") で囲む必要はありません(最初の行で変数 mytype が文字列型であることが宣言されているからです)。下にワークシートへの記入例を載せておきます。
図をみると、たとえば 2017/10/5 3:00 に設定値 q で 4 を加えると、4 × 四半期でちょうど 1 年が加算されていることがわかります。また設定値 ww で 5 を加えると 5 週間後の 2017/11/9 3:00 と表示されています。皆さんもこの関数を使って、どの設定値が何を返すのかを確認しておいてくださいな。