Días entre dos fechas teniendo en cuenta el semestre

Teniendo dos fechas, por ejemplo: 01/02/2019 a 17/10/2019, necesito saber cuantos días están incluidos en el primer semestre del año, y cuantos en el segundo semestre.

1 respuesta

Respuesta
2

No dices donde ni como lo quieres ver, si en un formulario, informe, cuadro de texto, mensaje, etc. Por eso, te pongo un ejemplo. Supongamos que tengo un formulario( en este caso es independiente)

Si escribo una fecha en Texto24

Si escribo otra en texto26

El código de lo eventos Después de actualizar de los cuadros de texto 24 y 26 es

Private Sub Texto24_AfterUpdate()
If [Texto24] > #1/1/2019# And [Texto24] <= #6/30/2019# Then
Dif1 = #6/30/2019# - Texto24
Etiqueta36.Caption = "Son del primer semestre"
Else
Dif1 = Texto24 - #7/1/2019#
Etiqueta36.Caption = "Son del segundo semestre"
End If
Etiqueta36.Visible = True
End Sub
Private Sub Texto26_AfterUpdate()
If Texto26 > #1/1/2019# And Texto26 <= #6/30/2019# Then
Dif2 = Texto26 - #1/1/2019#
Etiqueta37.Caption = "Son del primer semestre"
Else
Dif2 = Texto26 - #7/1/2019#
Etiqueta37.Caption = "Son del segundo semestre"
End If
Etiqueta37.Visible = True
End Sub

Icue, gracias por contestar.

No me sirve así.

Lo quiero para calcular intereses de demora.

Tengo una fecha de Vencimiento y una de Pago. Entre estas dos fechas hay una diferencia de días X, pero tengo que saber cuantos corresponden al primer semestre del año y cuantos al segundo. 

Entre 01/01/ & Year(Vencimiento) y 30/06 & Year(Vencimiento) y 
Entre 01/07/ & Year(Pago) y 31/12 & Year(Pago)

Por ejemplo, entre el 17/12/2018 y 18/02/2019 el ejemplo me da:

Es más complicado, ya que se pueden dar los casos

Fecha1 Semestre1 Fecha2 Semestre1

Fecha1 Semestre1 Fecha 2 Semestre2

Fecha1 Semestre2 Fecha2 Semestre1(Caso particular que luego explico)

Fecha1 Semestre2 Fecha2 Semestre2

La única forma en que fecha1 sea del segundo semestre y que fecha 2 sea del primero es que fecha2 tenga un año(1) mayor que fecha1. Prefiero no pensar en que pasaría si fuera más de un año.

Por otro lado, con la expresión que has puesto no te haría nada. Las fechas no funcionan así. No existen los años, meses, semanas, horas, minutos. Al día 01/01/1900 se le asignó el 1, al 02/01/1900 se le asignó el 2 y así hasta hoy. Los años, son fórmulas, dividir el número de días, por ejemplo, int(43254/365.24)+1900

Las horas y minutos son decimales de día

Por eso, la función hay que cambiarla.

Los cuadros de texto se llaman Semestre1, Semestre2 y Totaldias

Si pongo fecha 1 del primer semestre y fecha 2 del primer semestre, cuando pulso el botón

Si pongo Fecha1 del primer semestre y Fecha 2 del segundo

Si pongo Fecha1 de segundo semestre y fecha2 del primero(caso de la explicacion)

En este caso, los días del primer semestre corresponden a Fecha2 y los del segundo corresponden a Fecha1, y por último, si fecha2 es del segundo semestre y Fecha2 también es del semestre2

El código del botón es

Private Sub Comando40_Click()
Dim a1 As String, a2 As String, a3 As String, a4 As String, b1 As String, b2 As String, b3 As String, b4 As String
a1 = "01/01/" & "" & Format(Year([Fecha1]), "0000")
a2 = "30/06/" & "" & Format(Year([Fecha1]), "0000")
a3 = "01/07/" & "" & Format(Year([Fecha1]), "0000")
a4 = "31/12/" & "" & Format(Year([Fecha1]), "0000")
b1 = "01/01/" & "" & Format(Year([Fecha2]), "0000")
b2 = "30/06/" & "" & Format(Year([Fecha2]), "0000")
b3 = "01/07/" & "" & Format(Year([Fecha2]), "0000")
b4 = "31/12/" & "" & Format(Year([Fecha2]), "0000")
If Fecha1 >= CDate("" & a1 & "") And Fecha1 <= CDate("" & a2 & "") And Fecha2 >= CDate("" & b1 & "") And Fecha2 <= CDate("" & b2 & "") Then
Semestre1 = DateDiff("d", Fecha1, Fecha2)
Semestre2 = 0
ElseIf Fecha1 >= CDate("" & a1 & "") And Fecha1 <= CDate("" & a2 & "") And Fecha2 >= CDate("" & b3 & "") And Fecha2 <= CDate("" & b4 & "") Then
Semestre1 = DateDiff("d", Fecha1, CDate("" & a2 & ""))
Semestre2 = DateDiff("d", CDate("" & b3 & ""), Fecha2)
ElseIf Fecha1 >= CDate("" & a3 & "") And Fecha1 <= CDate("" & a4 & "") And Fecha2 >= CDate("" & b1 & "") And Fecha2 <= CDate("" & b2 & "") Then
Semestre2 = DateDiff("d", Fecha1, CDate("" & a4 & ""))
Semestre1 = DateDiff("d", CDate("" & b1 & ""), Fecha2)
ElseIf Fecha1 >= CDate("" & a3 & "") And Fecha1 <= CDate("" & a4 & "") And Fecha2 >= CDate("" & b3 & "") And Fecha2 <= CDate("" & b4 & "") Then
Semestre1 = 0
Semestre2 = DateDiff("d", Fecha1, Fecha2)
End If
TotalDias = Semestre1 + Semestre2
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas