Visual Basic para Aplicaciones - Cómo Determinar Si Una Fecha Cae Entre Dos Fechas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 9
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo Determinar Si Una Fecha Cae Entre Dos Fechas

Publicado por Ricardo (10 intervenciones) el 26/01/2019 15:06:29
buenas tardes...
mi problema es simple... tengo un listado de registros donde existen mas de un registro entre los cuales en cada registro cuenta con una fecha de inicio y otra de fin.... ahora yo quiero que en cada Lostfocus de un campo fecha verifique si la fecha que se acaba de ingresar cae entre la fecha inicial o final de cada registro que aparece en la lista
les agradezco la ayuda.... saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo Determinar Si Una Fecha Cae Entre Dos Fechas

Publicado por MIGUEL (121 intervenciones) el 28/01/2019 07:07:47
Buenas

No entendi muy bien jajaja, no existe el lostfocus en vba pero el evento exit te puede servir , te dejo la macro para el userform y la macro para la hoja de excel,estan hechas a como dios me dio a entenderte espero te sirva

MACRO PARA LA HOJA DE EXCEL(supongo que la columna A es el producto o servicio o lo que sea,la columna B es la fecha Inicial, La columna C es la fecha final y la columna D es donde escribes la fecha que quieres comparar)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ultFila As Long
    Dim rango As Range
    Dim celda As Range
    Dim fechaIni As String
    Dim fechaFin As String
    ultFila = Hoja4.Range("A" & Rows.Count).End(xlUp).Row
    Set rango = Range("D1:D" & ultFila)
    If Intersect(rango, Target) Is Nothing Then Exit Sub
    For Each celda In Intersect(rango, Target)
        fechaIni = celda.Offset(0, -2)
        fechaFin = celda.Offset(0, -1)
        If celda = "" Then
 
        ElseIf DateValue(celda) >= DateValue(fechaIni) And DateValue(celda) <= DateValue(fechaFin) Then
 
        Else
            MsgBox "No Esta Dentro del Rango!", vbOKOnly + vbCritical, "ERROR"
            celda.ClearContents
            celda.Activate
        End If
    Next celda
End Sub


ESTA ES LA MACRO PARA EL USERFORM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub txtFecha_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim fechaIni As String
Dim fechaFin As String
Dim fecha As String
fechaIni = "01/01/2019"
fechaFin = "31/01/2019"
fecha = Me.txtFecha
 
If Me.txtFecha = "" Then
    Me.txtFecha.BackColor = vbWhite
ElseIf DateValue(fecha) >= DateValue(fechaIni) And DateValue(fecha) <= DateValue(fechaFin) Then
    Me.txtFecha.BackColor = vbGreen
Else
    MsgBox "Fuera del Rango de Fechas!", vbOKOnly + vbCritical, "FUERA DEL RANGO"
    Me.txtFecha.BackColor = vbWhite
    Me.txtFecha = ""
End If
End Sub

En ambas macros obligo al usuario a introducir una fecha dentro del rango no se si asi sea como la requieras

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar