Quote Originally Posted by Doug Robbins View Post
Try

Private Sub Worksheet_Change(ByVal Target As Range)
Dim numdays As Long
Dim numyear As Long
Dim i As Long
If Target.Address = "$N$3" Then
    For i = 0 To 31
        Sheet1.Range("C8").Offset(i, 0) = ""
    Next i
    Select Case Format(Sheets(1).Range("N3"), "mmm")
        Case "Jan", "Mar", "May", "Jul", "Aug", "Oct", "Dec"
            numdays = 31
        Case "Apr", "Jun", "Sep", "Nov"
            numdays = 30
        Case "Feb"
            numyear = Format(Sheets(1).Range("N3"), "yyyy")
            If ((numyear Mod 4 = 0 And numyear Mod 400 = 0) Or (numyear Mod 4 = 0 And numyear Mod 100 <> 0)) Then 'Leap year
                numdays = 29
            Else
                numdays = 28
            End If
    End Select
    For i = 0 To numdays - 1
        Sheet1.Range("C8").Offset(i, 0) = "Data item"
    Next i
End If
End Sub
Not sure what you wanted the range filled with, but replace "Data item" with your requirement.
Kept debugging at : Select Case Format