Macro para Cambia Fuente de Color

Necesito me ayuden a moficar una macro que he elaborado para que al restar dos fechas de acuerdo al numero de días que genere como resultado me cambie el color de la fuente, la macro que tengo es la siguiente:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim valor As Date
Dim valor1 As Date
Dim col As Integer
col = 23
If ActiveCell.Column = col And ActiveCell.Row > 2 Then
valor = ActiveCell.Offset(-1, 0).Value
valor1 = ActiveCell.Offset(-1, -21).Value
If valor > 0 Then
fila = ActiveCell.Offset(-1, 0).Row
Cells(fila, col).Select
dias = valor - valor1
Select Case dias
Case 1:
Selection.Font.ColorIndex = 3
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Case 2:
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 3
Case 3:
Selection.Font.ColorIndex = 5
Case Else:
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0
End Select
Cells(fila + 1, col).Select
End If
End If
End Sub
Esta macro me funciona muy bien pero tengo que activar la celda manualmente para que me funcione y yo necesito que sin activar la celda manualmente realice los cambios indicados.

1 Respuesta

Respuesta
1
Se puede controlar el resultado de una fórmula con el evento Calculate, pero te imaginas que si realizas + de 1 cálculo se hará una tarea tediosa .
Según tu ejemplo donde tendrás 3 opciones creo que debieras utilizar formato condicional con fórmula (en lugar de valor celda)
En la Ayuda encontraras ejemplos, sino consúltame nuevamente.
Hola, Elsa
No puedo utilizar el formato condicional porque la data la bajo de otro sistema y luego la copio y la pego en excel teniendo que insertar celdas antes de la columna donde tengo que realizar el calculo, por lo que cuando inserto las celdas se mueve también el formato condicional, por eso tengo que hacerlo con una macro para que siempre quede fijo en la columna, el código que anexo me funciona muy bien pero el único detalle es que tengo que editar la celda para que haga el calculo y se debería cambiar para que con cualquier cambio realizado en las columnas fecha esta pueda realizar los calculo y mostrar los resultado.
De antemano gracias
FG
No podemos usar el evento Calculate porque el cálculo lo estás haciendo en tu rutina, entonces seguramente podremos utilizar el ingreso del dato de 1 col u otra. Pero algún evento necesitamos para poder ejecutar la macro.
Otra opción es que cargues los datos y luego presiones un botón o atajo de teclado para ejecutarla . Para esto solo tenés que copiar la rutina en un módulo, empezando con:
Sub nbre_macro () en lugar del Private Sub Worksheet_change
Como la rutina hace mención a la celda activa (Activecell) tendrás que tener en cuenta que se ejecutará a partir de esta referencia.
Comentame cuál será tu opción y como será tu proceso si necesitas más ayuda para esto.
Elsa
Me gustaría que el proceso fuera lo más automático posible de manera que no se le olvide al usuario darle clic a un botón o presionar un atajo, si existe otro diseño de macro pero que me de los mismos resultados no hay problema en cambiarla, probé cambiando el Private Sub, pero no me da el resultado esperado, porque solo lo hace para la celda activa.
Gracias.
FG
Así es: un botón será por celda o una vez finalizada la carga, para todo un rango.
No hay otro evento posible entonces. Microsoft nos debe el evento del cambio como resultado de fórmulas o por copiado y pegado ;)
Si el copiar y pegar datos lo hacés con una macro allí mismo debieras colocar las instrucciones para el formato.
No se me ocurre ninguna otra alternativa a las ya dadas.

Añade tu respuesta

Haz clic para o