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

#6 martin
08/01/2005 - 21:32 | Informe spam
Enviado


Saludos.

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

Respuesta Responder a este mensaje
#7 KL
08/01/2005 - 23:35 | Informe spam
martin,

Prueba sustituir todo el codigo con lo siguiente.

Saludos,
KL

'--Inicio Codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rango As Range
Dim UFila As Long
Dim UCol As Integer

With Target.Parent
UCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
UFila = .Cells(.Rows.Count, 1).End(xlUp).Row
Set Rango = .Range(Cells(1, 1), Cells(UFila, UCol))
End With
If Not Rango Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Call ActualizarGraficos(Rango)
Call FormatoCondicional(Rango)
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End Sub

Private Sub ActualizarGraficos(rng As Range)
Dim nGrfs As Integer
If Charts.Count < rng.Columns.Count - 1 Then
nGrfs = Charts.Count
Else
nGrfs = rng.Columns.Count - 1
End If
For i = 1 To nGrfs
With Charts(i).SeriesCollection(1)
.XValues = rng.Columns(1)
.Values = rng.Columns(1 + i)
.Name = rng.Columns(1 + i).Cells(1, 1)
End With
Next i
End Sub

Private Sub FormatoCondicional(rng As Range)
Dim c As Range
With rng
Set rng = .Resize(.Rows.Count - 1, _
.Columns.Count - 1).Offset(1, 1)
.Interior.ColorIndex = xlNone 'transparente
.Font.ColorIndex = 0
End With

If rng Is Nothing Then Exit Sub
For Each c In rng
With c
If IsNumeric(c) And Not IsEmpty(c) Then
Select Case c
Case Is < 201
.Interior.ColorIndex = 3 'rojo
.Interior.Pattern = xlSolid
.Font.ColorIndex = 2
Case 201 To 350
.Interior.ColorIndex = 6 'amarillo
.Interior.Pattern = xlSolid
Case 351 To 500
.Interior.ColorIndex = 4 'verde
.Interior.Pattern = xlSolid
Case Is > 500
.Interior.ColorIndex = 5 'azul
.Interior.Pattern = xlSolid
.Font.ColorIndex = 2
Case Else
End Select
Else
.Interior.ColorIndex = xlNone
End If
End With
Next
End Sub
'--Fin Codigo


"martin" wrote in message
news:
Enviado


Saludos.

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




Respuesta Responder a este mensaje
#8 martin
09/01/2005 - 00:04 | Informe spam
Muchisimas gracias KL, es perfecto.



Saludos


Martin



martin,

Prueba sustituir todo el codigo con lo siguiente.

Saludos,
KL

'--Inicio Codigo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rango As Range
Dim UFila As Long
Dim UCol As Integer

With Target.Parent
UCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
UFila = .Cells(.Rows.Count, 1).End(xlUp).Row
Set Rango = .Range(Cells(1, 1), Cells(UFila, UCol))
End With






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida