dar un color a una rango cuando una celda esté activa

20/05/2006 - 18:33 por Jose Soler | Informe spam
Hola al foro:

¿podría alguien decirme como dar un color de fondo a un rango cuando una
celda concreta sea la celda activa, es decir, cuando esta celda esté
seleccionada?.

Gracias a todos por vuestra atención

Salu2

José

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
22/05/2006 - 05:48 | Informe spam
hola, Jose !

[hasta donde se]... cuando las propuestas a una consulta NO 'encajan' EN las situaciones 'reales'...
[normalmente]... se debe a que los supuestos en los que se basan las propuestas NO 'pertenecen' a la realidad :))
[es decir]... en la consulta 'original' se ha omitido una exposicion REAL de la situacion que se pretende resolver :((
haciendo uso de 'situaciones imaginarias' [supongo que tratando de no abultar el mensaje con exposiciones 'banales'] -?-
Y [probablemente]... 'dejando de lado' [o sin leer] la explicacion de cuales fueron los supuestos utilizados [en la propuesta] -?-

1) [p.e.] en tu primera consulta mencionas: 'como dar un color de fondo a un rango cuando una celda concreta sea la celda activa'
-> [pero] NO mencionas cual es 'el rango' [que se debe colorear] NI cual 'la celda concreta' [que funcionara como 'activa'] :-((
2) 'derivado' de la 'ambiguedad' de este tipo de 'preguntas'...
a) la propuesta de David 'asume' que podras nombrar como 'MiRango' las que quieres colorear Y que 'A1' seria la celda 'activa' -?-
b) la propuesta de KL hace uso de todas las celdas y propone una formula que colorea toda la fila [de la celda activa] -?-

3) en tu segunda consulta mencionas: 'si en lugar de solo A1, hubieran tres alternativas posibles... A1 o B1 o C1'
y como estas 'respondiendo' a la propuesta de David, se asume que estas 'optando' por utilizar colores por codigo -?-

4) las propuestas de 'aprovechar' los formatos condicionales REQUEREN el uso de [un poco de] codigo en los eventos de 'esa' hoja ;)
-> la instruccion con el 'Application.ScreenUdating = True' :D

5) si por casualidad, utilizaste ejemplos 'aproximados' en tu exposicion del 'problema' [y quien propone NO los puede 'adivinar']...
se espera [o se asume] que tu mismo podras efectuar las adaptaciones pertinentes a tu situacion 'real' -?-

6) con los [nuevos] datos que expones en esta consulta...
-> que un 'par' de celdas en el rango K5:L20 se coloreen CUANDO la celda activa corresponda a 'su fila' EN las columnas N:V
a) selecciona el rango a colorear -> K5:L20
b) aplicales un formato condicional [colores a eleccion] usando la siguiente formula:
=y(celda("fila")=fila(),celda("columna")>13,celda("columna")<23)
c) NO OLVIDES copiar las siguientes lineas...
en el modulo de codigo de 'esa' hoja ==Dim Actual As Boolean, Anterior As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Anterior = Actual
Actual = Not Intersect(Target, [n5:v20]) Is Nothing
If Anterior Or Actual Then Application.ScreenUpdating = True
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

He probado las dos formas, la de David y la de Hector y Kl.
Con la de David se colorea toda la fila, aparte de que se pierdan las posibilidadades de undo etc.
Y con la de Hector y Kl se quedan coloreadas cuando la celda ya no es la celda activa.
Tengo 16 rangos unos debajo de otros, tipo K5:L5, que tengo que hacer que coloreen cada uno de ellos
cuando la celda activa este entre las celdas que estan a su derecha, dentro del rango n5:v5.
Los 16 rangos que se deben colorear y descolorear van desde K5:L5 hasta K20:L20 y para celda activa desde N5:V5 hasta N20:V20
Respuesta Responder a este mensaje
#7 Jose Soler
22/05/2006 - 11:41 | Informe spam
Muchísimas gracias Héctor:

Efectivamente tienes razón. Por querer simplificar la exposición y pensar
que me valdría así, en mi primera exposición no puse concretamente cual era
la situación. Al final no tuve otro remedio que exponerla porque launque las
soluciones aportadas son válidas para mi primera exposición, sin embargo yo
no he sabido trasladarlas aplicándolas a la verdadera situación.

En cuanto pruebe este última solución comento la jugada, ahora tengo que
salir corriendo.

Gracias de nuevo Héctor, por tu interés y por tu comprensión.

Salu2,

Jose

"Héctor Miguel" escribió en el mensaje
news:
hola, Jose !

[hasta donde se]... cuando las propuestas a una consulta NO 'encajan' EN


las situaciones 'reales'...
[normalmente]... se debe a que los supuestos en los que se basan las


propuestas NO 'pertenecen' a la realidad :))
[es decir]... en la consulta 'original' se ha omitido una exposicion REAL


de la situacion que se pretende resolver :((
haciendo uso de 'situaciones imaginarias' [supongo que tratando de no


abultar el mensaje con exposiciones 'banales'] -?-
Y [probablemente]... 'dejando de lado' [o sin leer] la explicacion de


cuales fueron los supuestos utilizados [en la propuesta] -?-

1) [p.e.] en tu primera consulta mencionas: 'como dar un color de fondo a


un rango cuando una celda concreta sea la celda activa'
-> [pero] NO mencionas cual es 'el rango' [que se debe colorear] NI


cual 'la celda concreta' [que funcionara como 'activa'] :-((
2) 'derivado' de la 'ambiguedad' de este tipo de 'preguntas'...
a) la propuesta de David 'asume' que podras nombrar como 'MiRango' las


que quieres colorear Y que 'A1' seria la celda 'activa' -?-
b) la propuesta de KL hace uso de todas las celdas y propone una


formula que colorea toda la fila [de la celda activa] -?-

3) en tu segunda consulta mencionas: 'si en lugar de solo A1, hubieran


tres alternativas posibles... A1 o B1 o C1'
y como estas 'respondiendo' a la propuesta de David, se asume que


estas 'optando' por utilizar colores por codigo -?-

4) las propuestas de 'aprovechar' los formatos condicionales REQUEREN el


uso de [un poco de] codigo en los eventos de 'esa' hoja ;)
-> la instruccion con el 'Application.ScreenUdating = True' :D

5) si por casualidad, utilizaste ejemplos 'aproximados' en tu exposicion


del 'problema' [y quien propone NO los puede 'adivinar']...
se espera [o se asume] que tu mismo podras efectuar las adaptaciones


pertinentes a tu situacion 'real' -?-

6) con los [nuevos] datos que expones en esta consulta...
-> que un 'par' de celdas en el rango K5:L20 se coloreen CUANDO la


celda activa corresponda a 'su fila' EN las columnas N:V
a) selecciona el rango a colorear -> K5:L20
b) aplicales un formato condicional [colores a eleccion] usando la


siguiente formula:
=y(celda("fila")=fila(),celda("columna")>13,celda("columna")<23)
c) NO OLVIDES copiar las siguientes lineas...
en el modulo de codigo de 'esa' hoja ==> Dim Actual As Boolean, Anterior As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Anterior = Actual
Actual = Not Intersect(Target, [n5:v20]) Is Nothing
If Anterior Or Actual Then Application.ScreenUpdating = True
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

> He probado las dos formas, la de David y la de Hector y Kl.
> Con la de David se colorea toda la fila, aparte de que se pierdan las


posibilidadades de undo etc.
> Y con la de Hector y Kl se quedan coloreadas cuando la celda ya no es la


celda activa.
> Tengo 16 rangos unos debajo de otros, tipo K5:L5, que tengo que hacer


que coloreen cada uno de ellos
> cuando la celda activa este entre las celdas que estan a su derecha,


dentro del rango n5:v5.
> Los 16 rangos que se deben colorear y descolorear van desde K5:L5 hasta


K20:L20 y para celda activa desde N5:V5 hasta N20:V20


Respuesta Responder a este mensaje
#8 Francisco MTY
22/05/2006 - 21:45 | Informe spam
revisa este codigo:

Trabajar solo con las dos columnas A - C,


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dato As String
Dim fila As Range
Rows(ActiveCell.Row).Select
Dim R As Long
Dim C As Long
Dim X As String
On Error Resume Next
F = ActiveCell.Row
C = ActiveCell.Column
If F >= 2 Or F < 60 Or C < 3 Then
Range("A" & (F - 1) & ":C" & F).Interior.ColorIndex = xlNone
Range("A" & (F + 1) & ":C" & F).Interior.ColorIndex = xlNone
Range("A" & F & ":C" & F).Interior.ColorIndex = 27
Exit Sub
End If
End Sub

EL detalle de este codigo es que si utilizas el mouse para seleccionar no se
restablece la fila anterior.
Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice
http://groups.msn.com/dadyboy
http://search.microsoft.com/?mkt=es-ES

"El progreso debe ser un movimiento ordenado y racional hacia una meta
fija... y no un torbellino de direcciones falsas y encontradas."
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida