VBAで日付を扱っていると、次のようなことはありませんか?
- 日付から「年」だけ取り出したい
- 曜日を取得したい
- 月や日だけを使って処理したい
このような場合は、DatePart関数を使うことで簡単に解決できます。
日付の一部(年・月・日・曜日など)を取り出すことができる便利な関数です。
この記事では、DatePartの基本から実務で使える活用方法までを初心者向けに分かりやすく解説します。
この記事でできること
- 日付から年・月・日を取得できる
- 曜日や時間の情報を取得できる
- 実務で使える具体例が分かる
基本:DatePart関数の使い方
基本構文はこちらです。
DatePart(間隔, 日付)
例:
MsgBox DatePart("m", Date)
→ 現在の「月」が取得されます。
間隔(第1引数)の種類
| 指定 | 意味 |
|---|---|
| “yyyy” | 年 |
| “m” | 月 |
| “d” | 日 |
| “y” | 年内の通算日 |
| “w” | 曜日 |
| “ww” | 週 |
| “h” | 時間 |
| “n” | 分 |
| “s” | 秒 |
年・月・日を取得する
Dim y As Long
Dim m As Long
Dim d As Long
y = DatePart("yyyy", Date)
m = DatePart("m", Date)
d = DatePart("d", Date)
MsgBox y & "/" & m & "/" & d
曜日を取得する
Dim w As Long
w = DatePart("w", Date)
MsgBox w
戻り値の意味:
- 1 → 日曜日
- 2 → 月曜日
- …
- 7 → 土曜日
曜日を日本語で表示する方法
曜日番号を文字に変換する例です。
Dim weekName As String
Select Case DatePart("w", Date)
Case 1: weekName = "日"
Case 2: weekName = "月"
Case 3: weekName = "火"
Case 4: weekName = "水"
Case 5: weekName = "木"
Case 6: weekName = "金"
Case 7: weekName = "土"
End Select
MsgBox weekName
セルの日付から取得する
Dim monthVal As Long
monthVal = DatePart("m", Range("A1").Value)
MsgBox monthVal
セルの値にも対応できます。
実務でよくある使い方
① 月ごとに処理を分ける
If DatePart("m", Date) = 4 Then
MsgBox "4月の処理です"
End If
② 曜日による分岐
If DatePart("w", Date) = 1 Then
MsgBox "今日は日曜日です"
End If
③ 年だけを取得
Range("A1").Value = DatePart("yyyy", Date)
DatePartとYear/Month/Dayの違い
似た関数との違いです。
| 関数 | 特徴 |
|---|---|
| DatePart | 柔軟(曜日や週も取得できる) |
| Year/Month/Day | シンプルで分かりやすい |
基本はYearなどでもOKですが、曜日などを扱うならDatePartが便利です。
注意点
① 曜日の基準
既定では日曜日が1になります。
環境によって異なる場合があるため注意してください。
② 日付型である必要がある
文字列の場合は日付として認識されないことがあります。
よくあるエラーと対処法
① 正しい値が取得できない
日付の形式を確認してください。
② 曜日がズレる
地域設定や基準曜日の影響の可能性があります。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- DatePartで日付の一部を取得できる
- 年・月・日・曜日・時間に対応
- 曜日取得や条件分岐で活躍
- 実務では非常に使用頻度が高い
DatePart関数を使いこなせるようになると、日付処理の自由度が大きく上がります。
特に曜日や月単位の処理では必須の関数なので、ぜひ活用してみてください。

コメント