Fechas vba excel

Buenas tengo una columna con fechas en orden creciente en excel y quisiera que las comparara con la fecha actual y realizara acción. Me explico: quisiera que si fuera menor siguiera asta que fuera igual o mayor, si fuera igual se fuera a la ultima fecha igual a la actual y si fuera mayor regresara a la inmediatamente inferior. El problema, o al menos para mi, es que intercalados hay filas vacías en posiciones "aleatorias" o sin ningún criterio aparente y es aquí cuando me he perdido. Por si no me explicado bien la intención es que me saque un resultado de la fecha actual, si hay registros de igual fecha que se vaya al ultimo de esa fecha y sino que me saque el de fecha inmediatamente anterior (que daría también el resultado actual) al margen de entradas de fechas posteriores y de los huecos en blancos que puede haber en cualquier posición.
Gracias por adelantado.

1 respuesta

Respuesta
1
Esto fue lo que entendí:
Sub fechas()
Dim x
Dim c As Range
x = Date
For Each c In Selection
   If c.Value "" Then
       If c x Then
           Range(a).Interior.Color = vbRed
       End If
   End If
Next c
End Sub

Revisa la macro que te envío. Lo que hace básicamente es revisar todas las celdas de un rango seleccionado (es importante tener un rango seleccionado antes de correr la macro). Al evaluar las celdas, cuando la celda está en blanco la omite y sigue con la próxima, si el valor es igual o menor a la fecha actual entonces lleva el registro de la última celda con un valor igual o menor, cuando encuentra una fecha mayor a la actual entonces selecciona la última celda válida.
Creo que puede funcionarte, sino me avisas y vamos revisándola.
Aver disculpa mi ignorancia:
Tu código me da error por lo que yo he deducido en verlo es arreglarlo así pero no se más
For Each miCelda In Selection
If miCelda.Value Like "" Then
If miCelda.Value ("aqui para que se cumpla lo que me dices que tengo que poner =? prque sin signo me da error) x Then
Range(a).Interior.Color = vbRed
End If
End If
Next miCelda
Por algún motivo cuando pego el código para enviarlo, suele eliminar algunos caracteres, en este caso la idea es que cambies las líneas:
If c.Value "" Then
If c x Then
Debe ser If c.Value diferente de "" Then y If c diferente de x Then, el diferente lo haces con el signo de menor y mayor seguidos.
Me da un error 1004 en tiempo de ejecución :(
Te paso mi código a ver si cometo un error:
Dim act
Dim cel As Range
act = Date
Range("B14:B65536").Select
For Each cel In Selection
    If cel.Value "" Then
        If cel act Then
            Range(a).Interior.Color = vbRed
        End If
    End If
Next cel
¿De todas maneras disculpa mi ignorancia lo que entiendo yo de la fórmula cuando sea diferente a nada y a actual haga eso pero hace lo de si es menor sigue si es igual va al ultimo igual y si es mayor va al anterior?
Tienes razón, hay un error en el código que te envié.
Revisa este archivo para que veas la macro completa:
http://es.geocities.com/webtavopz/Files/ultimafecha.xls

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas