VBA Stepup9
第9章 VBAの日付関数
VBAの中でも関数は用意されています。その中で、日付に関する関数がたくさん用意されていて、Split関数と同様によく使われます。
日付の取得方法(これは関数ではありません)
Cells(1, 1).Value = Date
時間の取得方法
Cells(1, 2).Value = Time
日付も時間も値として日付のシリアル値が入りますが、Cellsプロパティに代入する際に、システムの標準形式の表示形式も入ります。そのため標準形式の設定によっては、思い通りの日付にならない可能性があるため、日付をセルに代入する場合は、一般的にFormat関数(この関数も非常によく使われます)と組み合わせて使います。
Cells(1, 1) = Format(Date, "yyyy/m/d")
Format関数は値と同時に表示形式を設定します。CellsプロパティのValueプロパティがあっても、値と表示形式はどちらも入ります。
ここまでは単純に実行した日付と時間を求める方法です。
次に、 取得した日付を元に、当月の月初日と晦日を求める方法は以下のとおりです。
Dim sDate As Date ’ 月初日
Dim eDate As Date ' 晦日
sDate = DateSerial(Year(Date), Month(Month), 1)
eDate = DateSerial(Year(Date), Month(Month) + 1, 0)
VBAではDateSerial関数を使って、年・月・日を日付に変換します。月初日は、当月の1日の日付のシリアル値として求めます。 晦日は、翌月の1日の1日前と考え、月は翌月とし日は翌月の1日の1日前ということで0にすると、当月の晦日が求められます。
締日の場合は、開始日は月を前月に日を締日の翌日にし、締日は月を当月に日を締日にします(月末締めは晦日と同じ求め方をします)。
VBAの日付の関数の使い方は、ワークシート上の関数と同じ考え方になります。違いとしてはDateが日付を求める予約語になっているため、ワークシート関数のDate関数の代わりにDateSerial関数を使います。