Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 - Date関数

Excel VBA VBA
スポンサーリンク

Date 関数は「今日の日付だけをくれるシンプルな関数」

まず一言でいうと、
Date 関数は「今日の日付(年月日だけ)」を返してくれる関数です。

  • 時刻は含みません(0:00 相当)
  • 戻り値の型は Date 型です
  • 引数はありません(かっこを省略して書くことも多い)

イメージとしては、
「今日って何日?」と聞くと、VBAが“日付として”答えてくれる感じです。

Dim d As Date
d = Date   ' 例えば 2026/02/23 が入る
VB

ここで入るのは「文字列」ではなく、「日付型の値」です。
だからこそ、あとで日付計算にそのまま使えます。


Date 関数の基本的な使い方

今日の日付を変数に入れる

一番基本的なパターンです。

Sub SampleDateBasic()

    Dim d As Date

    d = Date

    MsgBox d   ' 例: 2026/02/23 と表示される

End Sub
VB

ここでのポイントは、

  • dDate 型の変数
  • Date 関数の結果(今日の日付)がそのまま代入される
  • メッセージボックスでは、PCの地域設定に応じた日付形式で表示される

ということです。

セルに「今日の日付」を書き込む

Sub SampleDateToCell()

    Range("A1").Value = Date

End Sub
VB

これで、A1 に今日の日付が入力されます。
セルの表示形式によって見え方は変わりますが、中身はちゃんと日付型です。


Date 関数が「日付型」で返ってくることの意味

そのまま「日付計算」に使える

Date 関数の戻り値は Date 型なので、
そのまま足し算・引き算ができます。

Sub SampleDateCalc()

    Dim today As Date
    Dim nextWeek As Date
    Dim lastWeek As Date

    today = Date
    nextWeek = today + 7      ' 7日後
    lastWeek = today - 7      ' 7日前

    MsgBox "今日: " & today & vbCrLf & _
           "7日後: " & nextWeek & vbCrLf & _
           "7日前: " & lastWeek

End Sub
VB

ここで大事なのは、

  • Date + 1 → 「明日」
  • Date - 1 → 「昨日」

というふうに、「1」が“1日”として扱われることです。

文字列の "2026/02/23" に +1 しても、
こういう動きにはなりません。
「日付として計算できる」のは、日付型だからこそです。

期限までの日数を求める

例えば、「締切日まであと何日か」を出したいとします。

Sub SampleDateDiff()

    Dim today As Date
    Dim deadline As Date
    Dim remain As Long

    today = Date
    deadline = #2026/3/10#

    remain = deadline - today   ' 日数差

    MsgBox "締切まであと " & remain & " 日です。"

End Sub
VB

deadline - today の結果は「日数」です。
これも、両方が日付型だからこそできる計算です。


Date 関数と Now 関数・Time 関数の違い

Date は「日付だけ」、Now は「日付+時刻」

よく一緒に出てくるのが Now です。

Dim d As Date
Dim n As Date

d = Date   ' 今日の日付(時刻は 0:00)
n = Now    ' 今この瞬間の「日付+時刻」
VB

例えば、2026/02/23 の 14:30 に実行したとすると、

  • Date → 2026/02/23 00:00
  • Now → 2026/02/23 14:30

というイメージです(表示形式によって見え方は変わります)。

「日付だけでよい」なら Date、
「時刻も含めて“いつ実行したか”を残したい」なら Now、
という使い分けになります。

Time は「時刻だけ」

ついでに Time も。

Dim t As Date
t = Time   ' 今の時刻だけ(中身は Date 型)
VB
  • Date:日付だけ
  • Time:時刻だけ
  • Now:日付+時刻

という整理で覚えておくとスッキリします。


Date 関数を使うときに意識してほしいポイント

「文字列としての日付」と混同しない

セルに "2026/02/23" と表示されていても、
それが「文字列」なのか「日付型」なのかで、できることが変わります。

Dim s As String
Dim d As Date

s = "2026/02/23"   ' 文字列
d = Date           ' 今日の日付(Date 型)
VB
  • s は「文字の並び」なので、s + 1 は日付計算にはならない
  • d は「日付型」なので、d + 1 は「1日後」になる

「今日の日付を基準に計算したい」と思ったら、
必ず Date(=日付型)を使う、という意識が大事です。

表示形式は Format でコントロールする

Date の中身は「日付型」ですが、
どう表示するかは別問題です。

Sub SampleDateFormat()

    Dim today As Date
    Dim txt As String

    today = Date

    txt = Format(today, "yyyy/mm/dd")
    MsgBox txt   ' 例: "2026/02/23"

End Sub
VB

「計算は Date 型で」「見せ方は Format で」
という分担を意識しておくと、日付処理がかなり整理されます。


まとめ:Date 関数は「今日という日付を、計算可能な形で受け取るための入口」

Date 関数の本質は、

「“今日”という情報を、日付型として受け取る」

ことです。

押さえておきたいポイントをコンパクトにまとめると、

  • Date は「今日の日付(年月日だけ)」を返す関数
  • 戻り値は Date 型なので、そのまま日付計算に使える
  • Date + 1 で明日、Date - 7 で1週間前、などが簡単に書ける
  • 「日付だけ」なら Date、「日付+時刻」なら Now を使い分ける
  • 表示は Format で整える(中身はあくまで日付型)

タイトルとURLをコピーしました