VBA開発

年/月/日から日付データを取得する【DateSerial関数】VBA

構文

DateSerial(Year,Month,Day)

Year   ・・・を表す数値(Long型) 必須項目 数値範囲:100~9999
Month・・・を表す数値(Long型) 必須項目 数値範囲:1~12※0や13も指定可能(後述参照)
Day    ・・・を表す数値(Long型) 必須項目 数値範囲:1~31※0や32等も指定可能(後述参照)
戻り値・・・日付型 (Date)

注意点

  • 対応範囲「西暦100年1月1日~9999年12月31日※範囲外はエラーが発生
  • Yearは2桁での省略記載可能です。※4桁の正式数値記載をお勧め

■2桁で省略した場合の結果

Year引数Year結果
0~292000年~2029年
30~991930年~1999年

コードサンプル

Public Sub test()
    '■通常の使い方
    MsgBox DateSerial(2020, 1, 1)   '→2020/01/01
    
    MsgBox DateSerial(5, 10, 1)     '→2005/10/01
    
    MsgBox DateSerial(Year(Now), Month(Now) + 1, Day(Now))
    '→2020/09/04なら2020/10/04が返る
    
    '■0を指定した場合
    MsgBox DateSerial(2020, 0, 1)   '→2019/12/01(前月同日を返す)
    MsgBox DateSerial(2020, 1, 0)   '→2020/12/31(前月末日を返す)

    '■月日をオーバーして指定した場合
    MsgBox DateSerial(2020, 13, 1)  '→2021/01/01(翌月同日を返す)
    MsgBox DateSerial(2020, 10, 32) '→2020/11/01(2020/10/31の翌日を返す)

    '■月日をマイナス値して指定した場合
    MsgBox DateSerial(2020, -1, 1)
    '→2020/12/01から2カ月前(0,-1で2カ月前)=2019/11/01を返す
    MsgBox DateSerial(2020, 10, -1) '
    '→2020/10/01から2日前(0,-1で2カ月前)=2020/09/29を返す
End Sub

使い方例

振込日や入金予定日など請求関連で使用するケースが多いと考えます。
翌末、翌々末等月末日を求めたい時が多いです。

下記記事も参照ください。
翌月末日や翌20日を簡単に求めたい(DateSerial関数)

 

コメント

タイトルとURLをコピーしました