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