aumentar el numero de formato condicional

08/01/2005 - 11:14 por martin | Informe spam
Buenos dias, y saludos a todos. Vengo otra vez a dar la vara con mi hoja
que tan amablemente me ayudo KL a resolver. Mi problema es que querria dar
4 formatos condicionales de color a cada columna y excel como parece ser
que todo el mundo sabia menos yo (he estado mirando san google) solo
permite 3. He intentado aplicar algunas lineas de codigo que he encontrado,
pero no me funcionan. ¿podeis echarme un cable?

Lo que quiero es que en cada columna me salgan:

en rojo las celdas que contengan un valor menor de 200
en amarillo los que esten entre 201 y 350
en verde los que esten entre 351 y 500
en azul los que tengan valor superior a 500


La tabla tiene 20 columnas y 96 filas, si fuese posible querria que al
introducil datos en las filas sifuientes, adoptasen el formato
correspondiente segun su valor.


Gracias de antemano por la ayuda

Preguntas similare

Leer las respuestas

#1 KL
08/01/2005 - 12:52 | Informe spam
Martin,

Prueba el siguiente macro (aunque puede resultar un poco lento):

1) Haz clic derecho sobre la pestana con el nombre de la hoja (abajo de
todo)
2) Elige la opcion "Ver codigo". Se abrira el editor de VBA
3) En la ventana q aparecera a la derecha pega el codigo de abajo.
4) Modifica lo q haga falta en el codigo
5) Vuelve a la hoja y haz pruebas.

Saludos,
KL

'inicio codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MiRango As Range, c As Range

'Hacemos q solo funcione en el rango determinado
Set MiRango = Range("B2:T100")
If Intersect(Target, MiRango) Is Nothing Then _
Exit Sub
Application.ScreenUpdating = False
For Each c In MiRango
With c.Interior
Select Case c.Value
Case ""
.ColorIndex = xlNone 'transparente
Case Is < 201
.ColorIndex = 3 'rojo
.Pattern = xlSolid
Case 201 To 350
.ColorIndex = 6 'amarillo
.Pattern = xlSolid
Case 351 To 500
.ColorIndex = 4 'verde
.Pattern = xlSolid
Case Is > 500
.ColorIndex = 5 'azul
.Pattern = xlSolid
Case Else
'si el color por defecto q usas
'en la columna evaluada no es el
'transparente, cambia xlNone por el
'numero correspondiente.
.ColorIndex = xlNone 'transparente
End Select
End With
Next
End Sub
'fin codigo


"martin" wrote in message
news:
Buenos dias, y saludos a todos. Vengo otra vez a dar la vara con mi hoja
que tan amablemente me ayudo KL a resolver. Mi problema es que querria dar
4 formatos condicionales de color a cada columna y excel como parece ser
que todo el mundo sabia menos yo (he estado mirando san google) solo
permite 3. He intentado aplicar algunas lineas de codigo que he
encontrado,
pero no me funcionan. ¿podeis echarme un cable?

Lo que quiero es que en cada columna me salgan:

en rojo las celdas que contengan un valor menor de 200
en amarillo los que esten entre 201 y 350
en verde los que esten entre 351 y 500
en azul los que tengan valor superior a 500


La tabla tiene 20 columnas y 96 filas, si fuese posible querria que al
introducil datos en las filas sifuientes, adoptasen el formato
correspondiente segun su valor.


Gracias de antemano por la ayuda

Respuesta Responder a este mensaje
#2 martin
08/01/2005 - 16:39 | Informe spam
Gracias KL, pero no funciona. Llevo un par de horas probando pero nada.
Pego el cogigo debajo del que me pasaste para los graficos, voy a la hoja
y.nada, no pasa nada, las celdas siguen sin color alguno. ¿que puede
ser lo que pasa?. Copie la tabla y cree otra hoja (sin el codigo de
graficos) y tampoco pasa nada.

Saludos, y si ves que puede ser.


Martin


Martin,

Prueba el siguiente macro (aunque puede resultar un poco lento):

1) Haz clic derecho sobre la pestana con el nombre de la hoja (abajo
de todo)
2) Elige la opcion "Ver codigo". Se abrira el editor de VBA
3) En la ventana q aparecera a la derecha pega el codigo de abajo.
4) Modifica lo q haga falta en el codigo
5) Vuelve a la hoja y haz pruebas.

Saludos,
KL

'inicio codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MiRango As Range, c As Range

'Hacemos q solo funcione en el rango determinado
Set MiRango = Range("B2:T100")
If Intersect(Target, MiRango) Is Nothing Then _
Exit Sub
Application.ScreenUpdating = False
For Each c In MiRango
With c.Interior
Select Case c.Value
Case ""
.ColorIndex = xlNone 'transparente
Case Is < 201
.ColorIndex = 3 'rojo
.Pattern = xlSolid
Case 201 To 350
.ColorIndex = 6 'amarillo
.Pattern = xlSolid
Case 351 To 500
.ColorIndex = 4 'verde
.Pattern = xlSolid
Case Is > 500
.ColorIndex = 5 'azul
.Pattern = xlSolid
Case Else
'si el color por defecto q usas
'en la columna evaluada no es el
'transparente, cambia xlNone por el
'numero correspondiente.
.ColorIndex = xlNone 'transparente
End Select
End With
Next
End Sub
'fin codigo


"martin" wrote in message
news:
Buenos dias, y saludos a todos. Vengo otra vez a dar la vara con mi
hoja que tan amablemente me ayudo KL a resolver. Mi problema es que
querria dar 4 formatos condicionales de color a cada columna y excel
como parece ser que todo el mundo sabia menos yo (he estado mirando
san google) solo permite 3. He intentado aplicar algunas lineas de
codigo que he encontrado,
pero no me funcionan. ¿podeis echarme un cable?

Lo que quiero es que en cada columna me salgan:

en rojo las celdas que contengan un valor menor de 200
en amarillo los que esten entre 201 y 350
en verde los que esten entre 351 y 500
en azul los que tengan valor superior a 500


La tabla tiene 20 columnas y 96 filas, si fuese posible querria que
al introducil datos en las filas sifuientes, adoptasen el formato
correspondiente segun su valor.


Gracias de antemano por la ayuda





Respuesta Responder a este mensaje
#3 KL
08/01/2005 - 20:13 | Informe spam
!Hombreee! no se habia ocurrido q iba a ser para la misma hoja. Habra q
meter los dos codigos dentro del mismo evento (copiando un macro bajo el
otro no funcionara). Y ademas usan los mismos nombres de variables por lo
cual creo q habria q separar los dos codigos como dos sub-procedimientos
independientes y llamarlos desde el procedimiento prinipal

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

Por que no me envias tu hoja y te hago el hibrido - creo q sera mas facil.
Mi correo electronico es (quitando NOSPAM
y PLEASE)

Saludos,
KL

"martin" wrote in message
news:
Gracias KL, pero no funciona. Llevo un par de horas probando pero nada.
Pego el cogigo debajo del que me pasaste para los graficos, voy a la hoja
y.nada, no pasa nada, las celdas siguen sin color alguno. ¿que puede
ser lo que pasa?. Copie la tabla y cree otra hoja (sin el codigo de
graficos) y tampoco pasa nada.

Saludos, y si ves que puede ser.


Martin


Martin,

Prueba el siguiente macro (aunque puede resultar un poco lento):

1) Haz clic derecho sobre la pestana con el nombre de la hoja (abajo
de todo)
2) Elige la opcion "Ver codigo". Se abrira el editor de VBA
3) En la ventana q aparecera a la derecha pega el codigo de abajo.
4) Modifica lo q haga falta en el codigo
5) Vuelve a la hoja y haz pruebas.

Saludos,
KL

'inicio codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MiRango As Range, c As Range

'Hacemos q solo funcione en el rango determinado
Set MiRango = Range("B2:T100")
If Intersect(Target, MiRango) Is Nothing Then _
Exit Sub
Application.ScreenUpdating = False
For Each c In MiRango
With c.Interior
Select Case c.Value
Case ""
.ColorIndex = xlNone 'transparente
Case Is < 201
.ColorIndex = 3 'rojo
.Pattern = xlSolid
Case 201 To 350
.ColorIndex = 6 'amarillo
.Pattern = xlSolid
Case 351 To 500
.ColorIndex = 4 'verde
.Pattern = xlSolid
Case Is > 500
.ColorIndex = 5 'azul
.Pattern = xlSolid
Case Else
'si el color por defecto q usas
'en la columna evaluada no es el
'transparente, cambia xlNone por el
'numero correspondiente.
.ColorIndex = xlNone 'transparente
End Select
End With
Next
End Sub
'fin codigo


"martin" wrote in message
news:
Buenos dias, y saludos a todos. Vengo otra vez a dar la vara con mi
hoja que tan amablemente me ayudo KL a resolver. Mi problema es que
querria dar 4 formatos condicionales de color a cada columna y excel
como parece ser que todo el mundo sabia menos yo (he estado mirando
san google) solo permite 3. He intentado aplicar algunas lineas de
codigo que he encontrado,
pero no me funcionan. ¿podeis echarme un cable?

Lo que quiero es que en cada columna me salgan:

en rojo las celdas que contengan un valor menor de 200
en amarillo los que esten entre 201 y 350
en verde los que esten entre 351 y 500
en azul los que tengan valor superior a 500


La tabla tiene 20 columnas y 96 filas, si fuese posible querria que
al introducil datos en las filas sifuientes, adoptasen el formato
correspondiente segun su valor.


Gracias de antemano por la ayuda








Respuesta Responder a este mensaje
#4 martin
08/01/2005 - 20:30 | Informe spam
Hola otra vez. He encontrado un codigo que funciona pero solo con letras,
es decir si haces lo que pone, cambia el color de la celda. No actua
sobre celdas que contienen valores anteriores a la aplicacion del codigo,
pero si a los que escribas a partir de ese momento. Lo malo es que no
funciona con mumeros y no se como se puede variar.

Si alguien lo sabe le estare muy agradecido.

El codigo es este y esta en esta
web:http://www.mvps.org/dmcritchie/excel/event.htm


****************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
'David McRitchie, 2000-08-08 rev. 2000-08-14
' http://www.mvps.org/dmcritchie/excel/event.htm
Dim vLetter As String
Dim vColor As Integer
Dim cRange As Range
Dim cell As Range
'***************** check range ****
Set cRange = Intersect(Range("B4:J19"), Range(Target(1).Address))
If cRange Is Nothing Then Exit Sub
'**********************************


For Each cell In Target
vLetter = UCase(Left(cell.Value & " ", 1))
'see colors.htm and event.htm in same directory as
' http://www.mvps.org/dmcritchie/excel/excel.htm
vColor = 0 'default is no color
Select Case vLetter
Case "A"
vColor = 34
Case "B"
vColor = 36
Case "C"
vColor = 39
Case "D"
vColor = 41
Case "E"
vColor = 38
Case "F"
vColor = 37
Case "G"
vColor = 35
End Select
Application.EnableEvents = False 'should be part of Change macro
cell.Interior.ColorIndex = vColor
Application.EnableEvents = True 'should be part of Change macro
Next cell
'Target.Offset(0, 1).Interior.colorindex = vColor
' use Text instead of Interior if you prefer
End Sub



Escribes la letra y cambia el color de la celda, pero si pones un numero
poniendo por ejemplo en los case -20 to 30 vcolor 4 no funciona.
Respuesta Responder a este mensaje
#5 martin
08/01/2005 - 20:35 | Informe spam
Vale KL, no habia visto tu respuesta, asi que ignora el mensaje anterior
a este. No sabia eso de los codigos en el mismo evento. Te envio la hoja
ahora mismo. Muchisimas gracias.


Martin



!Hombreee! no se habia ocurrido q iba a ser para la misma hoja. Habra
q meter los dos codigos dentro del mismo evento (copiando un macro
bajo el otro no funcionara). Y ademas usan los mismos nombres de
variables por lo cual creo q habria q separar los dos codigos como dos
sub-procedimientos independientes y llamarlos desde el procedimiento
prinipal

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

Por que no me envias tu hoja y te hago el hibrido - creo q sera mas
facil. Mi correo electronico es
(quitando NOSPAM y PLEASE)

Saludos,
KL

"martin" wrote in message
news:
Gracias KL, pero no funciona. Llevo un par de horas probando pero
nada. Pego el cogigo debajo del que me pasaste para los graficos, voy
a la hoja y.nada, no pasa nada, las celdas siguen sin color
alguno. ¿que puede ser lo que pasa?. Copie la tabla y cree otra hoja
(sin el codigo de graficos) y tampoco pasa nada.

Saludos, y si ves que puede ser.


Martin


Martin,

Prueba el siguiente macro (aunque puede resultar un poco lento):

1) Haz clic derecho sobre la pestana con el nombre de la hoja (abajo
de todo)
2) Elige la opcion "Ver codigo". Se abrira el editor de VBA
3) En la ventana q aparecera a la derecha pega el codigo de abajo.
4) Modifica lo q haga falta en el codigo
5) Vuelve a la hoja y haz pruebas.

Saludos,
KL

'inicio codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MiRango As Range, c As Range

'Hacemos q solo funcione en el rango determinado
Set MiRango = Range("B2:T100")
If Intersect(Target, MiRango) Is Nothing Then _
Exit Sub
Application.ScreenUpdating = False
For Each c In MiRango
With c.Interior
Select Case c.Value
Case ""
.ColorIndex = xlNone 'transparente
Case Is < 201
.ColorIndex = 3 'rojo
.Pattern = xlSolid
Case 201 To 350
.ColorIndex = 6 'amarillo
.Pattern = xlSolid
Case 351 To 500
.ColorIndex = 4 'verde
.Pattern = xlSolid
Case Is > 500
.ColorIndex = 5 'azul
.Pattern = xlSolid
Case Else
'si el color por defecto q usas
'en la columna evaluada no es el
'transparente, cambia xlNone por el
'numero correspondiente.
.ColorIndex = xlNone 'transparente
End Select
End With
Next
End Sub
'fin codigo


"martin" wrote in message
news:
Buenos dias, y saludos a todos. Vengo otra vez a dar la vara con mi
hoja que tan amablemente me ayudo KL a resolver. Mi problema es que
querria dar 4 formatos condicionales de color a cada columna y
excel como parece ser que todo el mundo sabia menos yo (he estado
mirando san google) solo permite 3. He intentado aplicar algunas
lineas de codigo que he encontrado,
pero no me funcionan. ¿podeis echarme un cable?

Lo que quiero es que en cada columna me salgan:

en rojo las celdas que contengan un valor menor de 200
en amarillo los que esten entre 201 y 350
en verde los que esten entre 351 y 500
en azul los que tengan valor superior a 500


La tabla tiene 20 columnas y 96 filas, si fuese posible querria que
al introducil datos en las filas sifuientes, adoptasen el formato
correspondiente segun su valor.


Gracias de antemano por la ayuda












Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida