Public Function DiasDelMes(Optional ByVal Fecha As Variant) As Integer
Dim mes As Integer, y As Integer
If IsMissing(Fecha) Then Fecha = Date
If IsDate(Fecha) Then
y = Year(Fecha)
mes = Month(Fecha)
ElseIf IsNumeric(Fecha) Then
y = Year(Date)
mes = IIf(Fecha > 0 And Fecha < 13, CInt(Fecha), 0)
ElseIf VarType(Fecha) = vbString Then
y = Year(Date)
Select Case UCase(Left$(Fecha, 3))
Case "FEB": mes = 2
Case "JAN", "MAR", "MAY", "JUL", "AUG", "OCT", "DEC": mes = 1
Case "APR", "JUN", "SEP", "NOV": mes = 4
End Select
End If
Select Case mes
Case 2: DiasDelMes = IIf(saltarYear(Fecha), 29, 28)
Case 1, 3, 5, 7, 8, 10, 12: DiasDelMes = 31
Case 4, 6, 9, 11: DiasDelMes = 30
End Select
End Function