Categories: VBA基礎

EXCEL VBA Year(年)Month(分)Day(日)関数(年月日の計算)

EXCEL VBA Year(年)Month(分)Day(日)関数(年月日の計算)

 

はじめに
ここでは、Year・Month・Day関数(年月日)の使い方を説明します。この関数は、年・月・日の日付の計算を行ったり、現在の日付から年・月・日を毎に習得するなど、年月日ごとに管理する場合など、便利な機能なので、順番に説明いたします。

 

●書式の説明
Year(日付)  ※日付から年を取得します。

 

●プログラムの説明
次にYear関数を使ったサンプルプログラムを作成しましたので、参照してください。下記のプログラムは、A列の条件でYear関数を使用した例になります。

 

Sub Year01()

    Dim X_DAY As Date

    X_DAY = Now
    Cells(1, "B") = Year(X_DAY) '現在の日付
    
    X_DAY = "2019/5/25"
    Cells(2, "B") = Year(X_DAY)  '2019/5/25
    
    X_DAY = "2019/5"
    Cells(3, "B") = Year(X_DAY)  '2019/5

    X_DAY = "5/25"
    Cells(4, "B") = Year(X_DAY)  '5/25
    
End Sub

 

●実行結果
上記のプログラムを実行するとA列の日付からB列に年を取り出しました。

 

●実行前 ※B列に年が表示されていません。(クリックして拡大)

 

●実行後 ※B列に年が表示されました。(クリックして拡大)

 

 

●プログラム説明②
次のサンプルプログラムは、好きな年を入力して現在の年(NOW関数)と比べて何年先の未来が何年前の過去なのかYear関数を使い計算を行うサンプルプログラムです。

 

Sub Year02()

    Dim X_DAY, I_Day As Date
    Dim Nen As Long
    
    I_Day = InputBox("好きな年を入力してください")
    X_DAY = Year(Now) '現在の年を代入
    
    If X_DAY < I_Day Then
            Nen = I_Day - X_DAY  '入力した年 - 現在の年を計算
            MsgBox "入力した年は" & Nen & "年先の未来です。"
        Else
            Nen = X_DAY - I_Day
            MsgBox "入力した年は" & Nen & "年前の過去です。"
    End If

End Sub

 

●実行結果
入力した年に対して、現在の年と比べて、数年前の未来か数年前の過去か結果を返します。

 

●実行前・実行後 ※入力した年の過去・未来・年数を表示します。(クリックして拡大)

 

Month関数(日付から月を取得)

 

●書式の説明
Month(日付)  ※日付から月を取得します。

 

●サンプルプログラム①
次にMonth関数を使ったサンプルプログラムを作成しましたので、参照してください。下記のプログラムは、A列の条件でMonth関数を使用した例になります。

 

Sub Month01()

    Dim X_DAY As Date

    X_DAY = Now
    Cells(1, "B") = Month(X_DAY) '現在の日付
    
    X_DAY = "2019/5/25"
    Cells(2, "B") = Month(X_DAY)  '2019/5/25
    
    X_DAY = "2019/5"
    Cells(3, "B") = Month(X_DAY)  '2019/5

    X_DAY = "5/25"
    Cells(4, "B") = Month(X_DAY)  '5/25
    
End Sub

 

●実行結果
実行後、A列の日付を元に、B列に該当する月が表示されました。

 

●実行前 ※月が表示されていません。(クリックして拡大)

 

●実行後 ※A列の日付に該当する月が表示されました。(クリックして拡大)

 

Day関数(日付から日を取得)

 

●書式の説明
Day(日付)  ※日付から年を取得します。

 

●サンプルプログラム①
次にDay関数を使ったサンプルプログラムを作成しましたので、参照してください。下記のプログラムは、A列の条件でDay関数を使用した例になります。

 

Sub Day01()

    Dim X_DAY As Date

    X_DAY = Now
    Cells(1, "B") = Day(X_DAY) '現在の日付
    
    X_DAY = "2019/5/25"
    Cells(2, "B") = Day(X_DAY)  '2019/5/25
    
    X_DAY = "2019/5"
    Cells(3, "B") = Day(X_DAY)  '2019/5

    X_DAY = "5/25"
    Cells(4, "B") = Day(X_DAY)  '5/25
    
End Sub

 

●実行結果
上記のプログラムを実行すると実行後、A列の日付を元に、B列に該当する日が表示されました。

 

●実行前 ※日が表示されていません。(クリックして拡大)

 

●実行後 ※A列の日付に該当する日が表示されました。(クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
以上で、Year関数 Month関数 Day関数(年・月・日の取得)の使い方でした。便利な機能ですのでサンプルプログラム等を参照して、作成する方法を覚えて下さい。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
AKIRA