Macro para desarollar el formato condicional.

Espero y me puedas ayudar.
Tengo un problema con una macro el cual por alguna razón solo en algunas celdas hace bien la condición de marcar con color pero en otras no lo que debe hacer es comparar fechas, ¿uso el formato de condición para hacer esto o hay otra manera más fácil?
Ejemplo
Columna I Columna J
11/30/16 11/31/16 Marca con color 4
11/30/16 11/29/16 Marca con color 0
11/30/16 11/30/16 Marca con color 0
Esta es mi macro:
Sub Compare()
Range("I6:J50").Select
With Selection
.FormatConditions.delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$I$6-$J6<0"
With .FormatConditions(1)
.Interior.ColorIndex = 4
End With
.FormatConditions.Add Type:=xlExpression, Formula1:="=$I$6-$J6>=0"
With .FormatConditions(2)
.Interior.ColorIndex = 0
End With
End With
End Sub
De antemano gracias por la ayuda (Y)

1 respuesta

Respuesta
1

H o la:

El primer caso no existe; estás poniendo 31 de noviembre y esa fecha no existe.

¿Es necesario poner el formato condicional con macro?

La otra forma es que pongas el formato condicional desde del menú de formato condicional.


¿O puedes poner el color de celda?

El color de celda y el color de formato condicional son atributos diferentes de la celda.

Puedes crear una macro en el evento change para que te revise las 2 fechas y te ponga el color que quieras.

Por ejemplo:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    Set r = Range("I6:J50")
    If Target.Count > r.Count Then Exit Sub
    If Not Intersect(Target, r) Is Nothing Then
        For Each c In Target
            c1 = r.Cells(1, 1).Column
            If c.Column = c1 Then
                If c.Value >= c.Offset(0, 1).Value Then
                    c.Interior.ColorIndex = 0
                    c.Offset(0, 1).Interior.ColorIndex = 0
                Else
                    c.Interior.ColorIndex = 4
                    c.Offset(0, 1).Interior.ColorIndex = 4
                End If
            Else
                If c.Offset(0, -1).Value >= c.Value Then
                    c.Interior.ColorIndex = 0
                    c.Offset(0, -1).Interior.ColorIndex = 0
                Else
                    c.Interior.ColorIndex = 4
                    c.Offset(0, -1).Interior.ColorIndex = 4
                End If
            End If
        Next
    End If
End Sub

Prueba la macro en una hoja nueva.


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro


Que tal
Gracias por responder
Copie la macro que me proporcionaste y no puedo ejecutarla
Ya vi cual era mi error de mi macro por que algunas fechas las marcaba y otras no en la línea
.FormatConditions.Add Type:=xlExpression, Formula1:="=$I$6-$J6<0" tiene $I$ por lo que esa fecha era la comparacion de la otra columna
De igual manera gracias por responder pero también me gustaría ejecutar tu macro puedes ayudarme con eso por favor.
Saludos

La macro no se ejecuta como las otras.

La macro la tienes que poner en los eventos de la hoja, sigue las instrucciones.

Cada que modifiques una celda del rango "I6:J50", la macro se ejecuta en auotmático

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas