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
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.
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
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.