Hola, en primer lugar puedes utilizar esta función que te devuelve si un año es bisiesto ya que el único problema leyendo tu mensaje es en estos años puesto que al parecer para los demás meses siempre serán 15 y 30
Código vb:
Ver originalFunction EsBisiesto(ByVal Anno As Integer) As Boolean
If Day(DateAdd("d", -1, DateSerial(Anno, 3, 1))) = 29 Then EsBisiesto = True
End Function
La primera quince SIEMPRE será día 15 y la segunda día 30 si no es Febrero. En este último caso será 28 o 29 dependiendo de si Bisiesto = True
Si he entendido mal o quedan dudas comenta.
Saludos