domingo, 11 de mayo de 2014

Ocultar columnas marcadas con un color

Descargue el fichero ocultar_columnas_amarillas.xlsm

Disponemos de una tabla en la que la fila 5 hace de cabecera y en ella hemos marcado de color amarillo ciertas celdas cuyas columnas nos gustaría ocultar. Hemos desarrollado una macro en VBA para Excel que logra ocultar las columnas amarillas.

Luego hemos creado otra macro que muestra todas las columnas. Se ejecutan con sendos botones que figuran al inicio de la hoja.




Sub Oculta_columnas_amarillas()
Dim n As Integer 'ultima columna
Dim R As Range
Dim i As Integer
Rem utiliza la fila 5 para localizar las amarillas
Range("A5").Select
Set R = ActiveCell.SpecialCells(xlLastCell)
n = R.Column
For i = 1 To n
    If Cells(5, i).Interior.ColorIndex = 6 Then
        Columns(i).Hidden = True
    End If
Next i
End Sub
Sub Muestra_columnas()
Cells.EntireColumn.Hidden = False
Range("A5").Select
End Sub

10 comentarios:

  1. Muy interesante, este código me hace alucinar en capturar la propiedad del color de las celdas y almacenarla como variable numérica, luego usarla más adelante en la recursiva para ocultar cualquiera que sea el color de las celdas resaltadas.

    ResponderEliminar
  2. Hola, esta macro me parece muy útil, pero estoy tratando de usar filas y diferente color y no me es posible, Agradecería tu ayuda.

    ResponderEliminar
    Respuestas
    1. ColorIndex = 6 es amarillo
      Otros valores para que puedas cambiar los colores son los siguientes:
      NEGRO ColorIndex = 1
      BLANCO ColorIndex = 2
      GRIS ColorIndex = 15
      MARRÓN ColorIndex = 53
      ROJO ColorIndex = 3
      NARANJA ColorIndex = 46
      VERDE ColorIndex = 4
      AZUL ColorIndex = 5
      VIOLETA ColorIndex = 29

      Un saludo.

      Eliminar
  3. Muy buenas Adolfo...

    Antes que nada, feliz 2016...

    GENIAL, felicidades por tu aporte. Me biene de perlas. La única pega para poder usarlo en mi caso es conseguir ejecutar las macros sin necesidad de los botones. Se podrían poner "flotantes"? o simplemente, asignarlos a una combinación de teclas. Por ejemplo CTRL + Ñ y CTRL + Ç (que son de las pocas que quedan libres en excel)

    Y añadir más botones para diferentes colores?

    (Uso el excel para hacer una importación a CSV y este subirlo a Magento)

    Mil millones de gracias... en serio!!!


    Saludos

    ResponderEliminar
  4. Muy buenas de nuevo...

    Perdona por no haber leido antes un poco. He encontrado una de las soluciones en tu blog:
    http://www.excelavanzado.com/2010/09/lanzar-macros-con-iconos-y-botones.html

    Pero si me pudieras ayudar a asignar varios colores diferentes, sería genial...

    Mil millones de gracias... (de nuevo)

    Recibe un cordial saludo!

    ResponderEliminar
  5. disculpe y si es el mismo codigo para ocultar las filas lo eh intentado y no me resulta

    ResponderEliminar
  6. Saludos Sr. Adolfo.

    Muy interesante y util su macro, pero noté que el mismo NO FUNCIONA en el caso que el formato de color de la celda sea el resultado de un formato condicional.
    ¿Hay alguna posibilidad de modificar el macro para que incluya los formatos condicionales de celda?
    Gracias por adelantado

    ResponderEliminar
  7. A mi me sucede lo que al compañero anterior. Necesito que lo haga con el color amarillo pero que procece de un formato condicional. Es posible

    ResponderEliminar
    Respuestas
    1. Intenta evaluar la condición entonces, en lugar del color . . .

      Eliminar
  8. Hola, buenas tardes, yo soy nuevo en esto de macros, y quisiera ver si alguien me ayuda. Del ejemplo de arriba, lo que hice fue solo cambiar el amarillo por el blanco. Pero tengo un archivo muy extenso, y no puedo cambiar todas las celdas a color blanco, hay unas amarillas que son importantes, así que ¿habrá alguna manera de ocultar columnas donde la celda no tenga color de fondo?, en caso negativo; ¿habrá una manera de rellenar todas las celdas sin color de fondo a blanco? Gracias de antemano por su ayuda

    ResponderEliminar