Last Updated on 2024年5月19日
Excel VBAを使用する際、日付データの操作は頻繁に行われるタスクの一つです。この記事では、日付データを扱う基本的なパターンから、実際の業務で役立つ応用例までを網羅的に解説します。
(Initial Post Date:2024年3月8日)
現在の日付と時刻の取得
Date関数
Date関数は現在の日付を返します。
現在の日付をメッセージボックスで表示してみましょう!
|
1 2 3 |
Sub MessageToday MsgBox Date End Sub |
実行結果

Now関数
Now関数は現在の日付と時刻を返します。
現在の日時をメッセージボックスで表示してみましょう!
|
1 2 3 |
Sub MessageNowDateTime MsgBox Now End Sub |
実行結果

年 、月、日を抽出
Year関数とMonth関数、Day関数を使用して、日付から年、月、日を抽出できます。
それぞれをメッセージボックスで表示してみましょう!
|
1 2 3 4 5 6 7 8 |
Sub MessageYearMonthDay() ' 現在の年を表示 MsgBox Year(Date) ' 現在の月を表示 MsgBox Month(Date) ' 現在の日を表示 MsgBox Day(Date) End Sub |
実行結果

日付のフォーマット
Format関数を使用して、日付を自由にフォーマットできます。例えば、年月だけを表示したい場合や日本語表記にしたい場合のコードは以下の通りです。
年月だけを表示
|
1 2 3 4 5 6 |
Sub MessageFormatYearMonth() ' 年月だけを表示 MsgBox Format(Date, "yyyy/m") ' 年月だけを表示 月を2桁で表示 MsgBox Format(Date, "yyyy/mm") End Sub |
実行結果

日本語表記
|
1 2 3 4 |
Sub MessageFormatYearMonth() ' 年月日を日本語表示 MsgBox Format(Date, "yyyy年m月d日") End Sub |
実行結果

Date関数とNow関数の使い分け
一般的に、年月日のみが必要な場合はDate関数を使用し、具体的な時間も含めたい場合はNow関数を使用することが多いです。私は、基本的にはDate関数を使用しています。これは、時間情報が不要であることが多いため、よりシンプルで直感的な選択となるからです。
実務での応用例
実務での応用例を紹介します。このコードでは、今日の日付をそのまま入力したり、フォーマットを変更してタイトルを入力したり、また、年月だけを取得してシート名に設定する方法を示しています。 さらに、別のシートの日付を取得してフォーマット加工する例は、こちらの記事を参考にしてください。➡【VBA入門】第五回:実務で役立つ データ集計
|
1 2 3 4 5 6 7 8 9 10 |
Sub Sample() With ThisWorkbook.Worksheets("Sheet1") ' B3セルに今日の日付を入力する .Range("B3") = Date ' C5セルに今日の日付から年月を取得してタイトルを入力する .Range("C5") = Format(Date, "yyyy") & "年" & Format(Date, "m") & "報告書" ' シート名を今日の年月に変更する .Name = Format(Date, "yyyymm") End With End Sub |
実行結果
ここでは、コードの動作を1行ずつ確認するために、F8(一部の環境ではFn + F8)キーでステップ実行しますが、通常はF5キーで実行してください。
次回の記事予告:Withステートメントの活用法
この記事では、VBAを使用した日付データの基本的な扱い方から実務での応用例までをご紹介しました。特に、実務での応用例ではWithステートメントを使用して、コードの可読性を高めるとともに、効率的なプログラミングを実現する方法を示しました。
次回の記事では、このWithステートメントに焦点を当て、その使い方を解説します。Withステートメントを活用することで、オブジェクトへの繰り返しアクセスを簡潔に記述できるため、コードの見通しが良くなり、エラーの発生を減らすことができます。
VBAでのプログラミングをより効率的に、そしてエレガントに行うためのテクニックを学びたい方は、ぜひ次回の記事もご覧ください。


コメント