Ayuda Macro pintar celdas verde o Rojo

4 envíos / 0 nuevos
Último envío
robervisual
Imagen de robervisual
Offline
última acción: Hace 9 años 6 meses
alta: 09/08/2012 - 19:26
Puntos: 40
Ayuda Macro pintar celdas verde o Rojo

Hola, Necesito crear una macro que cuando pegue una lista de numeros, los ponga verdes o rojos. van del 1 al 999 y muchos se repiten.

Por ej los verdes pueden ser del 1 al 10, del 20 al 50, el 53, del 111 al 150......etc y rojos el resto, por eso no me sirve el formato condicional que solo me da 3 opciones ya que es del excel 2003. En otro foro, me dieron esta macro, pero no me funciona bien.

SubColores()
For i =1To1000
Ref=Worksheets("Hoja1").Cells(i,1).Value
IfRef>0AndRef<10OrRef=30OrRef=40OrRef=50OrRef=66Then
Worksheets("Hoja1").Cells(i,1).Select
WithSelection.Interior
.Pattern= xlSolid
.PatternColorIndex= xlAutomatic
.Color=65280
.TintAndShade=0
.PatternTintAndShade=0
EndWith
Else
Worksheets("Hoja1").Cells(i,1).Select
WithSelection.Interior
.Pattern= xlSolid
.PatternColorIndex= xlAutomatic
.Color=255
.TintAndShade=0
.PatternTintAndShade=0
EndWith
EndIf
Next i
EndSub

 

 

Muchas gracias

Un saludo

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 42 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Ayuda Macro pintar celdas verde o Rojo

pero el formato condicional sí te sirve, porque sólo tienes dos formatos, verde y rojo.

utiliza las funciones Y y O para generar la fórmula que indique cuándo vas a querer que se aplique el formato condicional.

por ejemplo, puedes poner una función similar a esta en tu formato condicional

=O(Y(A1>=10;A1<=20);A1=53;...)

 

Respecto de tu macro, supongo que procede de una macro grabada porque tiene muchas cosas que no necesitas. Para el color de relleno basta con interior.color

 

podrías modificar tu macro para tener algo así:

Sub Colores()

For i =1 To 1000
  Ref=Worksheets("Hoja1").Cells(i,1).Value
  If Ref>0 And Ref<10 Or Ref=30 Or Ref=40 Or Ref=50 Or Ref=66 Then
    Worksheets("Hoja1").Cells(i,1).Interior.Color=65280
  Else
    Worksheets("Hoja1").Cells(i,1).Interior.Color=255
  EndIf
Next i
End Sub 

 

 

------
Ya sé Excel, pero necesito más.

robervisual
Imagen de robervisual
Offline
última acción: Hace 9 años 6 meses
alta: 09/08/2012 - 19:26
Puntos: 40
Re: Ayuda Macro pintar celdas verde o Rojo

Muchas gracias. Lo he probado y funciona. Solo que tengo tal cantidad de datos que no entra en una linea Ej:

Sub Colores()
For i =1 To 1000
  Ref=Worksheets("Hoja1").Cells(i,1).Value

If Ref>0 And Ref<9 Or Ref=23 Or Ref=24 Or Ref=26 Or Ref=27...............

** Ref>100 And Ref<109 Or Ref=123 Or Ref=124 Or Ref=126 ...............

** Ref>800 And Ref<900 Or Ref=923 Or Ref=924 Or Ref=926...............then

  Else
    Worksheets("Hoja1").Cells(i,1).Interior.Color=255
  EndIf
Next i
End Sub

Q puedo poner en las aspas para que no me de error.

Muchas gracias

AdjuntoTamaño
Plain text icon macro_pintar_funciona.txt2.44 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 42 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
guión bajo

cuando una línea en el código es muy larga, la puedes dividir, utilizando el guión bajo _ para indicar que la instrucción continúa en la siguiente línea

asi, por ejemplo, podrías poner algo así (bueno, con filas mucho más largas):

If Ref > 0 And Ref < 9 Or Ref = 23 Or Ref = 24 _
 Or Ref = 26 Or Ref = 27 then

esto también tiene un límite de veinticinco líneas que pueden unirse, pero solventas el problema de una sola línea.

 

 

------
Ya sé Excel, pero necesito más.