ITサポーターTsuchida

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関数を使います。