年月日時分秒をそれぞれ取得

DatePart関数を使い日付データから特定範囲の数値を取得するコード、それぞれ個別の関数もあります

'現在の西暦年を取得
Debug.Print DatePart("yyyy", Now)
'現在の月を取得
Debug.Print DatePart("m", Now)
'現在の日を取得
Debug.Print DatePart("d", Now)
'現在の時刻を取得
Debug.Print DatePart("h", Now)
'現在の分数を取得
Debug.Print DatePart("n", Now)
'現在の秒数を取得
Debug.Print DatePart("s", Now)

日付データから年月日時分秒のそれぞれ取り出すには「DatePart」関数を使用します

関数の書式

引数(太字は必須引数)
(interval, date, firstdayofweek, firstweekofyear)
戻り値の型 variant型(integer)

関数の解説

1つ目の引数「interval」に指定の文字列を入力することで指定の範囲のデータを取得することが出来ます

西暦年数を取得するには「”yyyy”」を指定します
和暦年数の取得は出来ないので、必要な場合はFormat関数を使用して取得します
(和暦に関してはこちらの記事を確認してください)

それ以外の範囲はコードを確認してください
これら以外にも指定できる範囲がありますが、使いどころが少し変わってくるので別の記事にします
(曜日と週数の取得はこちら)

また、文字列で指定するため「”」で囲む必要があります
そしてこの文字は実際には全角半角・大文字小文字全てどれで入力しても対応して返してくれますが、そんなことはせずに半角小文字で入力しましょう

2つ目の引数「date」に取得する元となる日付のデータを指定します
今回は全て現在の日付データを取得する「Now」関数を使用しています
(Now関数についてはこちらの記事です)

3つ目と4つ目の引数は省略可能で、計算の起点を指定するものです
「firstdayofweek」週の始まりを指定できます、省略した場合は日曜日が指定されます
「firstweekofyear」年の最初の週をどこに設定するかを指定します、省略した場合は1月1日のある週が第1週目として指定されます
これら2つの引数は週数や曜日の計算に関係する項目のため、今回の場合では必要ないので省略してもらっていいです

戻り値はvariant型の整数型です
Excelでは時刻データは小数点数値で表現されているので、この関数を使う事で実際目に見えているそれぞれの数値を整数値として取得することが出来ます

DatePart関数を使わずに取得する

この関数はそれぞれの範囲を指定することで取り出す関数ですが、例えば年を取り出す関数として「Year」関数があります
他にも全てそれぞれを取得する関数があります

あえてDatePart関数をトップにもってきた理由は、この関数は日付を取り出す専用の関数のため、Year関数など全ての関数を覚えていなくてもこの関数の解説を見ればすべてを網羅できるためです
あと、日付データの計算を行う「DateAdd」関数でも同じものを使用するのでそれとセットで分かり易いかなと思いました
(DateAdd関数の記事はこちらから)

ですが、年を取り出すYear関数であれば引数はdateのみでいいので記載は簡潔です
それに英単語からイメージもしやすいです

どちらにも利点があるので、ここから下にDatePart関数で行ったものと同じ結果を返すそれぞれの関数のコードも載せておきます

'現在の西暦年を取得
Debug.Print Year(Now)
'現在の月を取得
Debug.Print Month(Now)
'現在の日を取得
Debug.Print Day(Now)
'現在の時刻を取得
Debug.Print Hour(Now)
'現在の分数を取得
Debug.Print Minute(Now)
'現在の秒数を取得
Debug.Print Second(Now)

全ての関数の引数は1つで必須です、日付データを指定します
今回はNow関数でシステム日付を取得させています

また日付データを指定日付にする際に、VBA特有の日付データの書き方があります
その内容はこちらの記事の中にあります