AccessExcel

【VBA】Year関数の構文と使用例

更新日:2023/12/01

VBAのYear関数は指定した日付から年を、4桁の整数で返します。
ここでは、Year関数の構文と汎用的な使い方2つとExcelセルおよびAccessのフィールドからYearを取得する方法の計4つの使用例を紹介します。

 

Year関数の構文

Day関数の構文は、次のようになっています。

Year( date )
  1. date:
    Date関数等で取得した日付型(Variant/Date)または、日付を表す文字列または数式を指定。
年に対応する4桁の整数

 

Year関数の使用例

Year関数の使用例を4つ紹介します。

Date型から取得

Date型の変数からYear関数で年を取得するコード例です。

Sub yearSample1()
    Dim date1 As Date, date2 As Date
    ' 現在の日付
    date1 = Date
    ' 日付を指定
    date2 = #10/10/2000#
    
    Debug.Print date1 & " の年は " & Year(date1)
    Debug.Print date2 & " の年は " & Year(date2)
    
End Sub

実行すると、イミディエイトウィンドウに次のような結果が表示されます。

2023/10/12 の年は 2023
2000/10/10 の年は 2000

年を2桁で取得

Year関数で取得した年を2桁で表示します。

Sub yearSample2()
    Dim date1 As Date, date2 As Date
    
    date1 = #10/21/2000#
    date2 = #12/3/2023#
    
    Debug.Print date1 & " の年2桁は " & Right(Year(date1), 2)
    Debug.Print date2 & " の年2桁は " & Right(Year(date2), 2)
    
End Sub

次のコードで年を4桁から2桁に整形しています。

Right(Year(date1), 2)

これはRight関数を使用して、右(後ろ)から2文字を切り出しています。

上記コードの結果は、次のようになります。

2000/10/21 の年2桁は 00
2023/12/03 の年2桁は 23

Excelセルから取得

次のコードは、日付が入力されたセルからYear関数で日付の年を取得しています。


Sub yearSample3()
    Dim cell1 As Range, cell2 As Range
    
    With Sheets("sheet1")
        Set cell1 = Sheets("sheet1").Cells(2, 2)
        Set cell2 = Sheets("sheet1").Cells(3, 2)
    End With
    
    cell1.Offset(0, 2).Value = Year(cell1.Value) & "年"
    cell2.Offset(0, 2).Value = Year(cell2.Value) & "年"
End Sub

次のようなシートに対して上記のコードを実行します。

実行前 2000/10/10 2023/10/11

結果は次のようになります。

実行結果 2000年 2023年

Accessで日付フィールドから年を取得

次のようなAccess上で作成した日付型のフィールドデータを持っているテーブルから各データの年を取得します。

日付データ 2023/12/01 2021/11/05 1999/10/10 1975/08/08

Sub yearSample4()
    Dim db As Database
    Dim rs As Recordset
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("サンプルテーブル", dbOpenTable)
    
    With rs
        Do Until .EOF
            Debug.Print .Fields("日付フィールド") & _
                    "⇒" & _
                    Year(.Fields("日付フィールド")) & _
                    "年"
            .MoveNext
        Loop
    End With
    
    rs.Close: Set rs = Nothing
    Set db = Nothing
End Sub

実行すると、イミディエイトウィンドウに次のように表示されます。

2023/12/0120232021/11/0520211999/10/1019991975/08/081975

更新日:2023/12/01

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。