[VBA][Excel]うるう年チェック処理

※全てのExcelで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

サンプル ※説明に必要な部分しか記述していません

 

色々方法が考えられますが、ここでは毎年必ずある日にち(2/28)を使って、

「2月28日の翌日が29日だったら、うるう年」という判定をしています。そのためDateAdd関数がポイントです。

 

2015年と2016年の2パターンを想定し、これらを実行すると

Private Sub CommandButton1_Click()

Dim w_yyyymmdd As Variant


w_yyyymmdd = DateAdd("d", 1, "2015/2/28")
Sheet1.Range("A1").Value = CDate(w_yyyymmdd)

If Day(w_yyyymmdd) = 29 Then
    Sheet1.Range("B1").Value = "閏年です"
Else
    Sheet1.Range("B1").Value = "閏年ではありません"
End If


w_yyyymmdd = DateAdd("d", 1, "2016/2/28")
Sheet1.Range("A2").Value = CDate(w_yyyymmdd)

If Day(w_yyyymmdd) = 29 Then
    Sheet1.Range("B2").Value = "閏年です"
Else
    Sheet1.Range("B2").Value = "閏年ではありません"
End If

End Sub

このようになります。

vba-excel-dateadd

 

下記はヘルプからの引用です

構文

DateAdd(interval, number, date)

DateAdd 関数を使うと、ある日付に対して指定した時間間隔を、加えたり引いたりすることができます。

DateAdd 関数が無効な日付を返すことはありません。

 

Day(date)

月の何日かを表す 1~31 の範囲の整数を表すバリアント型 (内部処理形式 Integer の Variant) の値を返します。