Eventos según valor en celda de un rango dado

Cómo se trabaja con rangos de celdas en Macros, ¿Pero qué puedan evaluarse celda a celda?
Lo que necesito es quizá usando Target, que si cambia el valor de una celda que está en un rango dado, se produzca una acción, ejemplo que dicha celda cambie de color. Ejemplo: Tengo un rango dado ("A1:a10") y si una de esas celdas cambia se cambie su color de fuente. Lo que me pasa con Target es que siempre debo igualarlo a una celda pero no sé cómo hacerlo para que evalúe una celda y luego otra de un rango
Siguiendo con lo mismo, si por ejemplo una celda cambia de valor que en la celda contigua que corresponde a las fechas, aparezca la fecha de ese cambio, para el caso quizá Hoy(), pero si no cambio de valor permanezca la fecha inalterada. El problema es que si uso hoy siempre dirá que el valor de la celda cambio en la fecha presente y no en la fecha real.
Espero haberme explicado.
Muchas Gracias

1 Respuesta

Respuesta
1
Entrá al Editor, seleccioná con doble clic el objeto HOJA donde harás el ingreso de datos, y copiá esta rutina (ajustá tu rango)
Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("A2:A10"))
If Not isect Is Nothing Then
Target.Font.ColorIndex = 3   'color de fuente roja
target.offset(0,1) = Date    'para colocar fecha en col siguiente
End If
Set isect = Nothing
End Sub
Pruébala y no olvides regresar y finalizar si el tema queda concluido
Estimada Elsa es excelente lo que me ofreciste. Muchas GRacias!
Quizá sea mucho pedir pero, podrías "explicarme" paso a paso qué hace la Macro para entenderla y aprender a usar los códigos. Tengo otras preguntas relacionadas que posteé de esta misma base si pudieras verlas y ayuadrme seria genial
Bien, repito la rutina intercalando las explicaciones faltantes:
El evento utilizado es Change: es decir que controlará cada vez que se realice un cambio en alguna celda.
Private Sub Worksheet_Change(ByVal Target As Range)
'se establece una variable que guarda la intersección de la celda que ha cambiado (target) con el rango establecido
Set isect = Application.Intersect(Target, Range("A2:A10"))
'si esa variable tiene valor (es decir que encontró que Target se encuentra dentro del rango)
If Not isect Is Nothing Then
'se establece color de fuente a Target, es decir a la celda cambiada
Target.Font.ColorIndex = 3 'color de fuente roja
'se coloca la fecha del día (Date) a la celda que se encuentra a continuación de la celda que ha cambiado (target) -  Ver(*)
target.offset(0,1) = Date 'para colocar fecha en col siguiente
End If
'se libera la variable
Set isect = Nothing
End Sub
(*) La expresión Offset(fila, col) se utiliza para movernos a partir de la celda activa. En este caso me muevo 0 filas, 1 col a derecha.
Todos estos conceptos marcados de negro podes encontrarlos mejor explicados en la Ayuda de Excel. Posicioná el cursor sobre la palabra y presioná F1 para llamarla.
Saludos
Elsa
PD) Los manuales vienen con sus rutinas explicadas paso a paso. Aquí a veces no nos da el tiempo o presuponemos un mayor conocimiento de parte del usuario. Espero que ahora te haya quedado más claro y puedas resolver el resto.
http://es.geocities.com/lacibelesdepunilla/manuales
Elsa, tu ayuda fue estupenda muchas, muchas gracias. Como ya dije, ojalá veas mis otras preguntas y me des tan buena dirección como ahora.
Un saludo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas