Ocultar celdas y mostrar celdas mediante una macro

Quiero ver si alguien me puede ayudar a ocultar y tambien mostrar un tipo de columnas en excel, por ejemplo quiero mostrar la siguiente columna del ultimo dato ingresado en en la fila A8 ( de un rango a8:a23) y ocultar las ultimas cuatro columnas de ese dato ingresado.

Ejemplo

1 Respuesta

Respuesta
1

Algo así te ocultaría las ultimas 4 columnas con datos de la fila 8

Sub OculCol()
UC = Cells(8, 1).End(xlToRight).Column
Cells(8, UC).EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -1). EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -2). EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -3). EntireColumn.Hidden = True
End Sub

Así para que no haga relajo en la planilla si A8 esta vacío je je

Sub OculCol()
If Range("A8") <> "" Then
UC = Cells(8, 1).End(xlToRight).Column
Cells(8, UC).EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -1).EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -2).EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -3).EntireColumn.Hidden = True
Else
MsgBox "Parece que no hay datos en A8", vbInformation
End If
End Sub

muchas gracias estimado, me acabo de dar cuenta que en la pregunta en vez de a8 debería ser fila 8, el tema es que esta es una base que se va rellenando todo los días, avanza según los días del mes, entonces quiero que automáticamente me oculte las columnas anteriores de los últimos cinco datos ingresados en el mes. (de un rango b8:x14), espero que se me haya entendido y muchas gracias de antemano por tu ayuda

Si la celda A8 es porque la búsqueda es sobre la fila 8 y parte de columna A si tu quieres comenzar la búsqueda desde otra columna

Ejemplo quieres que busque la ultifa columna con datos de la fila o a partir de la columna B tendría que ser

UC = Cells(8, 2).End(xlToRight). Column

"Cells(8,2)" = es lo mismo que range("B8") solo que se usa el numero de columna en lugar de la letra

El IF era para que sino encuentra dato en la celda inicial que no prosiga pero si tu siempre tienes datos ahi no la necesitas

En cuanto a las 4 columnas anteriores a la ultima con dato seria asi

Sub OculCol()
UC = Cells(8, 2).End(xlToRight).Column
Cells(8, UC).offset(0, -1). EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -2). EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -3). EntireColumn.Hidden = True
Cells(8, UC).Offset(0, -4). EntireColumn.Hidden = True
End Sub

¡Gracias!  Muchas gracias por tu respuesta me ha ayudado mucho :)

Estimado y como puedo hacer que me oculte las columnas de la B a la X y que me muestre los últimos cuatro datos que tenga la fila 8.

de antemano muchas gracias

Si lo que quieres es ocultar las columnas desde la B hasta la X es

Sub BXocultas()
Range("B:X").EntireColumn.Hidden = True
End Sub

si silo quieres ocultar la coumna B y la X crea 2 lineas una que diga ("B:B") y otra que diga ("X:X")

Pero si olcultas la columna, estas olcultado desde la fila1 hasta la ultima fila de excel no puedes ocultar parte de una columna

Lo que si puedes hacer es ocultar las fórmulas que contiene un grupo determinado de celdas dándole a la celda la propiedad "Ocultar" y protegiendo la hoja, aunque no este la celda protegida no podrán ver tu fórmula (no se si tiene que ver con lo que tu quieres pero igual te comento esto xD ja ja ) tu dime si es alguna de estas opciones lo que quieres hacer

¡Gracias! ¿Gracias compadre y como puedo hacer para aprender más de macros tienes algún libro o curso que se bueno para aprender de este tema?

Sinceramente yo voy aprendiendo cada día algo nuevo a medida que respondo preguntas dentro de TodoExpertos je je leo alguna pregunta, sino conozco la respuesta, me informó en Internet, ayudó a la persona y adquiero nuevos conocimientos, así salimos todos favorecidos jeje pero de todas formas tienes muchísimo material en diversas páginas en Internet o youtube

Ok muchas gracias, mira aun no he podido solucionar el problema lo que intente hacer ahora es ocultar las columnas de la b la x, y que después me muestre solamente los últimos cinco datos ocupando la sub oculcol() y cambiando los true por los false, pero el excel no las busca porque parece que cuando esta oculta no puede realizar la operación.

Mira también me ayudaron con esta fórmula

Sub Ocultar_Columnas()
    Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
  c = Cells(10, Columns.Count).End(xlToLeft).Column
    letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & c - 5 & ",4),""1"","""")")
    If c > 6 Then
        Columns("B:" & letra).EntireColumn.Hidden = True
    End If
End Sub

El tema es que yo quiero que oculte de la a:x y aquí me oculta desde el ultimo dato que obtenga esa fila, osea pasado la X y no me sirve, si me puedes ayudar ideal

Y si lo que tu quieres es que te oculte desde la "A" a la "X" porque no simplemente escribes

Sub BXocultas()
Range("A:X").EntireColumn.Hidden = True
End Sub

Aun no comprendo bien que es lo que quieres hacer...

Con esta línea que estas usando

    Cells.EntireColumn.Hidden = False

Haces que todas las columnas que estan ocultas en tu hoja se muestren

Compadre, ya lo pude solucionar muchas gracias por tu ayuda :)

Seba, quisiera ver si me puedes ayudar con otro tema lo que pasa es que ahora la columnas que evalúo en vez de tener texto tienen fórmulas por lo cual cuando busca el x1toright, me dirige a una columna que es más allá de lo que necesito que seleccione.

  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 = Tru

La formula que ocupo es principalmente que me calcule datos si es que cumple con la restricción o no (la restricción es que me calcule el dato si  la fecha es igual o menor  en la que estamos que la tengo ingresada a lo largo de la fila 5 , desde la columna B a la X. Por ejemplo me calcula todas las columnas desde el 1 de diciembre al 12 de diciembre y las que tengan ingresado desde el 13 de diciembre a fin de mes no las calcula. Si me puede ayudar a hacer un select desde la columna hasta la fecha ocupando la funcion hoy seria de mucha ayuda, quedo atento a tus comentarios.

Saludos.

La línea que busca la última columna con datos está buscando sobre la fila 8, si tienes los datos en la fila 5 modifica la variable "C"

C = Cells(5, 1).End(xlToRight).Column

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas