VBAでうるう年の判定を行う

VBAでうるう年の判定を行う方法が2通り

ある年がうるう年かどうかを判定するには、VBAでは2通りの方法が考えられます。

1つはプログラミング言語とは関係なく、うるう年の考え方を実装する方法です。

もう1つはDateSerial関数を使う方法です。

それぞれについてコードで説明します。

1. うるう年の考え方を実装する方法

一般的なうるう年かどうかの判定は以下の4つの判定を行います。先の判定でうるう年である・ない、が確定した場合は以降の判定は行いません。

  1. 年が400で割り切れる場合はうるう年とする。
  2. 100で割り切れる場合はうるう年ではなく通常年とする。
  3. 4で割り切れる場合はうるう年とする。
  4. それ以外はうるう年ではなく通常年とする。



2. DateSerial関数での判定方法

DateSerial関数を使う方法は、対象年の3月1日の1日前の2月末日が29日かどうかでうるう年か判定します。

1日前を計算することになるため、先に紹介したコードよりも内部では無駄な処理が行われていることになります。

どれぐらい遅くなるのか処理速度を確認したところ、2000回ループしてうるう年判定関数を実行した場合、上のコードは約0.6秒、このコードは約2.4秒ほど掛かっており、1.8秒ほど上のコードよりも遅いです。ただ、1回の処理あたりでは0.0009秒遅い、というぐらいのものです。

利用方法

上に2つの関数を紹介しましたが、どちらも使い方は同じです。

ループで1000から3000年までの2000年間についてうるう年かどうかの判定を行うサンプルです。

関連記事

サブコンテンツ

このページの先頭へ