COMO ALTERNAR el color de relleno de una celda con una macro .

verán amigos tengo la columna B y quiero pintar con un color dicha columna pero que pinte una si y otra no asea alternadamente y que a la vez pinte las celdas adyacentes a su izquierda y derecha hay que tener en cuenta que en esta columnas hay celdas combinadas manualmente me demandaría mucho quisiera ver si se puede hacer con un macro vb les dejo una captura para visualicen mejor

gracias de antemano señores gurus del excel espero me puedan ayudar gracias

3 Respuestas

Respuesta
1

Mi fuerte no son las macros, pero te puedo recomendar que utilices un formato condicional en las celdas.

Te adjunto un archivo con un ejemplo, espero te funcione.

OJO: le tendrías que poner un ID para que ahi se base la formula de la condición.

No olvides Finalizar y puntuar, cualquier duda estoy a tus ordenes.

http://www.mediafire.com/?8sxf6gg2qsjndpx

Respuesta
1

¿El color debe ser verde y blanco?

Con cuál color quieres empezar, ¿verde o blanco?

Cada vez que ejecutes la macro se actualizaría toda tu hoja, porque puede ser que hayas borrado líneas o puesto más celdas combinadas, ¿estás de acuerdo?

con cualquier color amigo mientras que sea claro, y que empiece con verde

en ejemplo q respondiste esta excelente quisiera saber como puedo yo modificarle el color en linea del código tengo cambiar para cambiarle el color

Ya ví que finalizaste la otra pregunta.

Por favor, podrías finalizar esta pregunta para no tenerla en mis pendientes.


Y cuando necesites algo más de excel con gusto, puedes preguntarme directamente.

disculpa la molestia puedes indicarme donde cambio el color ya que es muy fuerte si me pudieras decir en que linea del código puedo cambiar el color te lo agradeceria mucho

Esta es la macro

Sub colores()
'por.DAM
c = 0
For i = 3 To Range("B" & Rows.Count).End(xlUp).Row
    If c = 4 Then c = 0 Else c = 4
    If Cells(i, "B").MergeCells = True Then
        rango = Cells(i, "B").MergeArea.Address(False, False)
        linini = Range(Left(rango, InStr(1, rango, ":") - 1)).Row
        linfin = Range(Mid(rango, InStr(1, rango, ":") + 1)).Row
        Range(Cells(linini, "A"), Cells(linfin, "K")).Interior.ColorIndex = c
        i = linfin
    Else
        Range(Cells(i, "A"), Cells(i, "K")).Interior.ColorIndex = c
    End If
Next
End Sub

En esta línea de la macro, el 4 es el color verde, el 0 , es sin color.

If c = 4 Then c = 0 Else c = 4

Cada color en VBa es representado por un número, puedes entrar a esta página y ver los colores y los números, busca el color que te agrade y toma el número y escribe el número en lugar del 4
http://dmcritchie.mvps.org/excel/colors.htm

Saludos. DAM
Si es lo que necesitas.

Respuesta
1

Podrías mandarme el fichero para asi poder probar la macro in situ.

Las celdas combinadas quedan muy bonitas pero son un engorro para muchas faenas de Excel, un simple copiar y pegar se puede hacer muy difícil ya que te dice que la estructura de celdas destino no es la misma que la del origen. Y en cuanto a este ejerció nos hará tener que calcular el número de filas de cada celda combinada que por lo que veo es variable.

Mándame el fichero a

[email protected]

Pon como asunto el título de la pregunta y como titulo del fichero AlternarColor.XLSM (o .XLSX)

A lo mejor no hace falta que me mandes el fichero. Si sabes como editar las macros debes añadir un módulo Visual basic y copiar esta macro.

Sub colorear()
Dim Fondo, FondoVerde, FilaFinal, i, NuFilas As Integer
FondoVerde = RGB(100, 255, 150)
Fondo = FondoVerde
i = 2
FilaFinal = Range("A" & Rows.Count).End(xlUp).Row
While i <= FilaFinal
   NuFilas = Cells(i, "B").MergeArea.Rows.Count
   Range("A" & i & ":" & "K" & i + NuFilas - 1).Interior.Color = Fondo
   If Fondo = vbWhite Then Fondo = FondoVerde Else Fondo = vbWhite
   i = i + NuFilas
Wend
End Sub

Lo que ha sido un poco más complicado ha sido dar con el color verde que tenías, me parece que no era de los estándar de la paleta de colores. Espero haber dado con el. Si no puedes editar el color que tienes en tu fichero y te dirá las proporciones de rojo, verde y azul que tiene que son las que pondrías en la función RGB(rojo, verde, azul)

Y por lo demás hay que calcular cuántas filas se combinan (NuFilas) en la columna B para seleccionar el rango que hay que colorear. Se lleva la cuenta de en qué fila estamos, cambiamos de color cada vez y así hasta llegar al final.

Hay una línea que puse conectores & de sobra, simplificada quedaría así

Range("A" & i & ":K" & i + NuFilas - 1).Interior.Color = Fondo

Por cierto, si la última columna no es la K, cambias el K de esa linea por la letra de la última columna.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas