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.