Esconder celdas que tengan en la celda no tengan valor

Estimado estuve realizando una macro en la cual me ocultaba algunas celdas que no contenían datos o sea estaban en blancos (sin fórmulas), lo que pasa es que ahora quiero ocupar esa macro pero para que me oculte las columnas que no tienen datos ( pero si tienen fórmulas esta vez, cuando no coincide le digo que no coloque datos que lo deje como vació), que tengo que cambiar para que mi macro pueda funcionar bien, les dejo el script si es que me pueden ayudar

Sub Ocultar_Columnas()
Dim xRg As Range
Dim hojitas()
Dim i As Byte
hojitas = Array("Resumen BBPP - Select  N°", "Resumen BBPP - Select MM$", "Detalle Cristian Caporelli", "Detalle Paula Bucarey", "Detalle Maria Jesus Gonzalez", "Detalle Pamela Silva", "Detalle Sergio Contreras", "Detalle Raul Arcos", "Detalle Geovanni Erba", "Resumen Empresas N°", "Resumen Empresas MM$")
For i = LBound(hojitas) To UBound(hojitas)
Sheets(hojitas(i)).Select
Range("B:X").EntireColumn.Hidden = False
 Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
  C = Cells(8, 1).End(xlToRight).Column
    letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & C - 4 & ",4),""1"","""")")
    If C > 5 Then
        Columns("B:" & letra).EntireColumn.Hidden = True
    End If
        For Each xRg In Range("A8:x8")
            If xRg.Value = "" Then
   xRg.EntireColumn.Hidden = True
            End If
        Next xRg
    Application.ScreenUpdating = True
    Cells(8, C).Offset(0, 1).EntireColumn.Hidden = False
    Next i
End Sub

1 respuesta

Respuesta
1

Esta parte del código que evalúa el rango A8:X8 funciona correctamente ocultando las col que están vacías o muestran resultado = vacío.

For Each xRg In Range("A8:x8")
            If xRg.Value = "" Then
   xRg.EntireColumn.Hidden = True
            End If
        Next xRg

Pero luego estás mostrando nuevamente la col D en fila 8 con el Offset, en esta línea:

Application.ScreenUpdating = True
    Cells(8, C).Offset(0, 1). EntireColumn.Hidden = False

Sdos:

Elsa

* Cyber-mes en manuales Excel

Estimada, arregle eso que me dijiste, pero aun así no me sigue funcionando, según yo es porque ingrese fórmulas en las celdas y desde ahí que no me funciona la macro, ya que si yo coloco solamente números me funciona pero con las fórmulas no :(

Sub nueva()
Dim xRg As Range
Dim hojitas()
Dim i As Byte
hojitas = Array("Resumen BBPP - Select  N°", "Resumen BBPP - Select MM$", "Detalle Cristian Caporelli", "Resumen Empresas N°", "Resumen Empresas MM$")
For i = LBound(hojitas) To UBound(hojitas)
Sheets(hojitas(i)).Select
Range("B:X").EntireColumn.Hidden = False
 Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
  C = Cells(8, 1).End(xlToRight).Column
    letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & C - 4 & ",4),""1"","""")")
    If C > 5 Then
        Columns("B:" & letra).EntireColumn.Hidden = True
    End If
        For Each xRg In Range("A8:x8")
            If xRg.Value = "" Then
   xRg.EntireColumn.Hidden = True
            End If
        Next xRg
    Next i
End Sub

¿Con qué versión Excel trabajas?

¿Necesitas qué NO se oculten cuando tienen fórmulas? ¿O qué se oculten cuando el resultado queda ""?

Que se oculten cuando el valor da "". ( Ya que puse un condicionante en la fórmula que cuando no cumple la restricción quede de esa manera)(tengo todas las celdas con fórmulas).

Debes revisar nuevamente la fórmula que solo estés dejando "" y no un espacio porque la macro funciona relativamente bien.

Por favor lee los comentarios en la macro para que veas cómo repites las instrucciones que muestran/ocultan columnas:

Sub nueva()
Dim xRg As Range
Dim hojitas()
Dim i As Byte
hojitas = Array("Resumen BBPP - Select  N°", "Resumen BBPP - Select MM$", "Detalle Cristian Caporelli", "Resumen Empresas N°", "Resumen Empresas MM$")
For i = LBound(hojitas) To UBound(hojitas)
Sheets(hojitas(i)).Select
Range("B:X").EntireColumn.Hidden = False   'aquí se muestran las col B:X
 Application.ScreenUpdating = False
Cells.EntireColumn.Hidden = False       'aquí se muestran todas las col
    C = Cells(8, 1).End(xlToRight).Column
    letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & C - 4 & ",4),""1"","""")")
    If C > 5 Then
       Columns("B:" & letra).EntireColumn.Hidden = True 'aquí se oculta col B hasta letra
    End If
    For Each xRg In Range("A8:x8")
         If xRg.Value = "" Then
            xRg.EntireColumn.Hidden = True   'aquí se oculta col vacía según fila 8... quizás ya estén ocultas x la instrucción anterior
         End If
    Next xRg
    Next i
End Sub

Observa que:

1- muestras col B:X

2- Muestras todas las col con Cells.    (1 de las 2 sobra)

Luego:

3- Ocultas desde B:hasta la última letra.

4- ocultas desde A:X

En 1ra imagen se observa que tengo algunas col (D:F) con fórmulas que devuelven "". Luego de correr la macro se ocultaron... quizás por la instrucción 3 o quizás por la 4.

Entonces para verificar que se ejecuta correctamente la instrucción 4 inhabilité la 3... y observa que se ocultaron correctamente las que tienen "" como resultado de la fórmula.

Por lo tanto, salvo que sea una cuestión de versión Excel se me hace que el problema nuevamente está en la fórmula o ... entre el escritorio y la silla? ;)

Sdos!

¡Gracias! Elsa, parece que era un tema de version de excel porque lo probé en otro computador y si funcionaba muchas gracias por tu ayuda que estés bien.

Saludos!

No me valores pobremente a mí cuando el problema es de tu excel. Y esa sugerencia también fue parte mi respuesta.

Puedes mejorar tu valoración en cualquier momento.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas