Asignar valor a celda según color

Llevo a un par de días buscando solución, mirando manuales y demás pero no sé prácticamente nada de programación y estoy algo perdida. Necesito que me asignen el valor 0 a las celdas que estén de color rojo. Para ello he coloreado de rojo la celda J5 y he pegado el siguiente código para ejecutar la macro.
Sub prueba()
Dim vCellTarg As String
vCellTarg = "J5"
For Each cell In Selection
If ActiveCell.Interior.ColorIndex = ActiveSheet.Range(vCellTarg).Interior.ColorIndex Then
ActiveCell = 0
End If
ActiveCell.Offset(0, 1).Select
Next cell
End Sub
Me sale ok pero el problema es que sólo puedo ejecutarlo por filas de una en una. Me gustaría saber la manera de seleccionar las filas que yo quiera y de ahí me ejecute la condición. ¿Es posible?

1 Respuesta

Respuesta
2
Hola (xxxxxx)
Tines varios problemitas en tu código y te explico...
No se si desde antes seleccionas un rango antes de correr la macro, pues en el código dices que se repita un bucle en toda la selección pero no dices cual es la selección.
Pones también la condición para que la celda activa sea 0, el color de la celda activa debe ser igual al color de la celda J5, pero después desplazas la celda activa a la siguiente celda a la derecha y a su vez mandas siguiente al bulce... entonces o haces una cosa o haces la otra.
Para hacer lo que dices debes especificarlo en el bucle y de esa forma te funcionara perfecto... te paso el código:
Sub prueba()
Application.ScreenUpdating = False
Dim celda As Range
Range("a1:j10").Select
For Each celda In Selection
If celda.Interior.Color = 255 Then
celda = 0
End If
Next
Application.ScreenUpdating = True
End Sub
Puse los falso en la pantalla para que no se muestre el correr de la macro por si son muchísimas celdas a evaluar, en la parte en negritas del range lo cambias por el rango que tu quieras evaluar (si son filas tendrás que poner de que fila a que fila, por ejemplo "1:20", pero te repetirá el bucle por todas las celdas de estas filas). O bien en lugar de seleccionar el rango podrías especificarlo en el bulce así:
For Each celda In Range("a1:j10")
La segunda negrita es por el color que debe tener la celda para que sea 0 (rojo=255) puedes probar colores grabando macro y luego ves el código.
¿Cualquier duda que tengas me dices, va que va?...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas