教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA関数】DateSerial関数で今月末の日付を調べる方法を教えて!

       f:id:m_kbou:20200209083728p:plain

今月末の日付を調べる方法について説明します。調べるにはDateSerial関数を使用します。まず最初にDateSerial関数の基本的な使い方を説明し、最後に今月末日付を調べる方法について説明します。

 

【目次】

 

構文

記述方法は、以下の通りとなります。

=======================================================================

DateSerial[年][月][日]

=======================================================================

[説明]:

DateSerial関数は引数「年」・「月」・「日」で指定した整数値を日付に変換して返します。[年]には年を表す整数値を100~9999の範囲で指定し、[月]には月を表す整数値を1~12の範囲で指定し、[日]には日を表す整数値を1~31の範囲で指定します。内容を纏めると、「[年]・[月]・[日]で指定した整数値を日付に変換して返して下さい。」との意味になります。

[記述例]:

DateSerial(2020, 2, 29)
DateSerial(Year(Date), Month(Date), Day(Date))

 

使い方

使い方について、具体的に説明していきます。

整数値を指定して日付に変換する方法

年・月・日に整数値を直接指定して日付に変換する方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()
    MsgBox DateSerial(2020, 2, 29)
End Sub

-------------------------------------------------

[年]に「2020」を、[月]に「2」を、[日]に「29」を指定します。結果「[年が2020で、[月が2で、[日が29の日付をMsgBoxで表示して下さい。」との意味になります。

[実行例]:

※2020/2/29が表示されます。 

f:id:m_kbou:20200209083751p:plain

整数値を指定して日付に変換する方法についての説明は以上です。

 

関数を指定して日付に変換する方法

年・月・日に関数を指定して日付に変換する方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()
    MsgBox DateSerial(Year(Date), Month(Date), Day(Date))
End Sub

-------------------------------------------------

[年]に「Year(Date)」を、[月]に「Month(Date)」を、[日]に「Day(Date)」を指定します。結果「[年が今年で、[月が今月で、[日が今日の日付をMsgBoxで表示して下さい。」との意味になります。

[実行例]:

※本日が2020/2/9であるため、2020/2/29が表示されます。 

f:id:m_kbou:20200209083810p:plain

関数を指定して日付に変換する方法についての説明は以上です。

 

今月末の日付を調べる方法

今月末の日付(今月最終日)を調べる方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()
    MsgBox DateSerial(Year(Date), Month(Date) + 1, 1) - 1
End Sub

-------------------------------------------------

[年]に「Year(Date)」を、[月]に「Month(Date) + 1」を、[日]に「1」を指定する事で、本日が2020/2/9である場合、年は「2020」となり、月は「2+1=3」となり、日は「1」となります。これによりDateSerial関数では2020/3/1日付に変換される事となりますが、ここから更に1を引く事で、変換した日付の前日、つまり2月最終日が返される事になります。結果「年が今年で、月が来月で、日が1日の前日日付をMsgBoxで表示して下さい。」との意味になります。

[実行例]:

※本日が2020/2/9であるため、2020/2/29が表示されます。 

f:id:m_kbou:20200209083751p:plain

今月末の日付を調べる方法についての説明は以上です。

 

おわりに

今回は、今月末の日付を調べる方法について説明しました。月末最終日を調べる方法については、このやり方が一番手っ取り早いと思います。是非活用してみて下さい。