• Lunes 20 de Mayo de 2024, 12:59

Autor Tema:  Re: ultimo dia de fecha  (Leído 1327 veces)

hipelos

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: ultimo dia de fecha
« en: Viernes 20 de Junio de 2003, 08:11 »
0
¿alguien sabe alguna funcion o algo para obtener el ultimo dia del mes de la fecha que le paso yo?

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
ultimo dia de fecha
« Respuesta #1 en: Martes 5 de Agosto de 2003, 18:08 »
0
Estoy seguro de que existe una función que devuelve el último día del mes, pero hasta que alguien te indique cuál es, seguro que va a resulverte el problema esta función que se me ha ocurrido:


Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

    '  TextBox en el que se introduce la fecha a valorar
    If KeyCode = 13 Then
        Dim nDias As Integer             ' Este será el valor del último día del mes
        nDias = DiasMes(Text1.Text)
    End If

End Sub

Private Function DiasMes(dFecha As Date) As Integer
    Dim nDias As Integer
    Dim dMes As Date
   
    On Error Resume Next
    nDias = 31
    Do
        dMes = Str(nDias) & Mid(dFecha, 3)
        If Err = 0 Then
            Exit Do
        End If
        Err = 0
        nDias = nDias - 1
    Loop
    DiasMes = nDias
End Function

Te adjunto el programita que he preparado para conseguir este cálculo.

También tengo que indicarte que este tema debías de haberlo planteado en el foro de Visual Basic, no en VBA...

Saludos y suerte
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

enri333

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ultimo dia de fecha
« Respuesta #2 en: Viernes 6 de Mayo de 2005, 10:01 »
0
Este código coloca el día 31 al mes en custión y después mira si da error o no, repitiendo el bucle hasta que la fecha es válida p.e. el 31 de febrero no existe así que le quita un día, como el 30 de febrero no existe le quita otro día etc...

    Dim fecha As Boolean
    Dim dia, mes, año As Integer

    fecha = False
    dia = 31
    mes = Month(mes en cuestión)
    año = Year(año en cuestión)
    Do Until fecha = True
    If IsDate(dia & "/" & mes & "/" & año) Then
'mi rutina también miraba que no fuera ni sábado ni domingo
'        If Weekday(dia & "/" & mes & "/" & año) = 1 Then dia = dia - 2
'        If Weekday(dia & "/" & mes & "/" & año) = 7 Then dia = dia - 1
    fecha = True
    Else
    dia = dia - 1
    End If
    Loop