Jump to content

Ocultar columna en 0.


falexramos

Recommended Posts

Posted

Oculta la columna si cumple el criterio, que la columna este en valor 0.

Sub Ocultar_columnas_0()
Dim x As Integer
Dim y As Integer

y = 0
Range("J5").Select
For x = 10 To 256
Cells(5, x).Select
If
IsNull(ActiveCell.value) Or ActiveCell.value = "" Then
MsgBox ("Fin del
Proceso, Se modificaron: " & y & " Columnas en Ceros")
Exit
Sub
Else
Selection.End(xlDown).Select
If ActiveCell.value = 0
Then
Selection.EntireColumn.Hidden = True
y = y + 1
End If
End
If
Next x

End Sub[/CODE]

Es algo que quice compartir, espero le sirva alguien mas.

  • 3 months later...
Posted

Hola a todos:

Con el permiso de falexramos y aprovechando para contestar a rulesagain, he realizado mi propia versión de la macro.

Muestra/oculta de forma automática las columnas en función del rango usado, si contienen la totalidad de las celdas vacías y/o a cero.

También permite ignorar filas y columnas al principio del rango usado.

Option Explicit

Sub OcultarMostrarColumnasMA(Optional ACero As Boolean = True, _
Optional Vacia As Boolean = True, _
Optional FilasIgnoradas As Long = 0, _
Optional ColumnasIgnoradas As Long = 0)


'Definimos las variables
Dim Filas, Columna, Columnas, FilaInicial
Dim ColumnaInicial, FilasVacias, Celda, x, y

'Determinamos rango de filas
FilaInicial = ActiveSheet.UsedRange.Row + FilasIgnoradas
Filas = ActiveSheet.UsedRange.Rows.Count - FilasIgnoradas

'Determinamos rango de columnas
ColumnaInicial = ActiveSheet.UsedRange.Column + ColumnasIgnoradas
Columnas = ActiveSheet.UsedRange.Columns.Count - ColumnasIgnoradas

'Recorremos las columnas del rango
For Columna = ColumnaInicial To ColumnaInicial + Columnas - 1

FilasVacias = 0

'Contamos las celdas vacias en el rango activo de la columna
For Each Celda In ActiveSheet.Range(Cells(FilaInicial, Columna), _
Cells(FilaInicial + Filas - 1, Columna))
If (Vacia = True And Celda.Value = Empty) Or _
(ACero = True And Celda.Value = 0) Then
FilasVacias = FilasVacias + 1
End If
Next

'Mostramos/ocultamos la columna en función del número de celdas vacías
If FilasVacias = Filas Then
ActiveSheet.Columns(Columna).Hidden = True 'Ocultamos
Else
ActiveSheet.Columns(Columna).Hidden = False 'Mostramos
End If

Next

End Sub


Sub OcultarMostrarColumnas()
OcultarMostrarColumnasMA
End Sub


[/CODE]

La macro contiene 4 parámetros, todos ellos opcionales:

[b]ACero[/b] .Si hemos de tener en cuentas las celdas vacías, [b]asume True[/b]

[b]Vacia[/b] .Si hemos de tener en cuentas las celdas a cero(valor numérico), [b]asume True[/b]

[b]FilasIgnoradas [/b].Número de filas a ignorar al principio del rango usado, asume [b]cero(0)[/b]

[b]ColumnaIgnoradas [/b].Número de Columnas a ignorar al principio del rango usado, asume [b]cero(0)

Ejemplos de llamada:

[color=#008000]Todo el rango, se tienen en cuenta las celdas vacías y a cero [/color][/b]

[b]OcultarMostrarColumnasMA[/b]

[b][color=#008000]Todo el rango, se tienen en cuenta las celdas vacias[/color][/b]

[b]OcultarMostrarColumnasMA False, True[/b]

[color=#008000][b]Todo el rango, se tienen en cuenta las celdas a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, False[/b]

[color=#008000][b]Ignoramos las filas 1-5, se tienen en cuenta las celdas vacías y a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, True, 5[/b]

[color=#008000][b]Ignoramos las filas 1-5, y las columnas 1-3, se tienen en cuenta las celdas vacías y a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, True, 5, 3

[/b]

Si se desea automatismo total, colocar la llamada a la macro en el evento Change de la hoja o del libro.

Saludos

Posted

rulesagain prueba con esto haber si es lo que necesitas

Sub Ocultar_filas_0()
Dim x As Long
Dim y As Integer
Application.ScreenUpdating = False
y = 0
Range("J2").Select
For x = 1 To Rows.Count
Cells(x, 1).Select
If IsNull(ActiveCell.value) Or ActiveCell.value = "" Then
MsgBox ("Fin del Proceso, Se modificaron: " & y & " Filas en Ceros")
Exit Sub
Else
Selection.End(xlToRight).Select
If ActiveCell.value = 0 Then
Selection.EntireRow.Hidden = True
y = y + 1
End If
End If
Next x
Application.ScreenUpdating = True
End Sub[/CODE]

una modificacion que le hizo Adrian "Macro Antonio" y la mejoro.

  • 1 year later...
Posted
Hola a todos:

Con el permiso de falexramos y aprovechando para contestar a rulesagain, he realizado mi propia versión de la macro.

Muestra/oculta de forma automática las columnas en función del rango usado, si contienen la totalidad de las celdas vacías y/o a cero.

También permite ignorar filas y columnas al principio del rango usado.

Option Explicit

Sub OcultarMostrarColumnasMA(Optional ACero As Boolean = True, _
Optional Vacia As Boolean = True, _
Optional FilasIgnoradas As Long = 0, _
Optional ColumnasIgnoradas As Long = 0)


'Definimos las variables
Dim Filas, Columna, Columnas, FilaInicial
Dim ColumnaInicial, FilasVacias, Celda, x, y

'Determinamos rango de filas
FilaInicial = ActiveSheet.UsedRange.Row + FilasIgnoradas
Filas = ActiveSheet.UsedRange.Rows.Count - FilasIgnoradas

'Determinamos rango de columnas
ColumnaInicial = ActiveSheet.UsedRange.Column + ColumnasIgnoradas
Columnas = ActiveSheet.UsedRange.Columns.Count - ColumnasIgnoradas

'Recorremos las columnas del rango
For Columna = ColumnaInicial To ColumnaInicial + Columnas - 1

FilasVacias = 0

'Contamos las celdas vacias en el rango activo de la columna
For Each Celda In ActiveSheet.Range(Cells(FilaInicial, Columna), _
Cells(FilaInicial + Filas - 1, Columna))
If (Vacia = True And Celda.Value = Empty) Or _
(ACero = True And Celda.Value = 0) Then
FilasVacias = FilasVacias + 1
End If
Next

'Mostramos/ocultamos la columna en función del número de celdas vacías
If FilasVacias = Filas Then
ActiveSheet.Columns(Columna).Hidden = True 'Ocultamos
Else
ActiveSheet.Columns(Columna).Hidden = False 'Mostramos
End If

Next

End Sub


Sub OcultarMostrarColumnas()
OcultarMostrarColumnasMA
End Sub


[/CODE]

La macro contiene 4 parámetros, todos ellos opcionales:

[b]ACero[/b] .Si hemos de tener en cuentas las celdas vacías, [b]asume True[/b]

[b]Vacia[/b] .Si hemos de tener en cuentas las celdas a cero(valor numérico), [b]asume True[/b]

[b]FilasIgnoradas [/b].Número de filas a ignorar al principio del rango usado, asume [b]cero(0)[/b]

[b]ColumnaIgnoradas [/b].Número de Columnas a ignorar al principio del rango usado, asume [b]cero(0)

Ejemplos de llamada:

[color=#008000]Todo el rango, se tienen en cuenta las celdas vacías y a cero [/color][/b]

[b]OcultarMostrarColumnasMA[/b]

[b][color=#008000]Todo el rango, se tienen en cuenta las celdas vacias[/color][/b]

[b]OcultarMostrarColumnasMA False, True[/b]

[color=#008000][b]Todo el rango, se tienen en cuenta las celdas a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, False[/b]

[color=#008000][b]Ignoramos las filas 1-5, se tienen en cuenta las celdas vacías y a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, True, 5[/b]

[color=#008000][b]Ignoramos las filas 1-5, y las columnas 1-3, se tienen en cuenta las celdas vacías y a cero [/b][/color]

[b]OcultarMostrarColumnasMA True, True, 5, 3

[/b]

Si se desea automatismo total, colocar la llamada a la macro en el evento Change de la hoja o del libro.

Saludos

Macro antonio.. buenisima macro.. como hago para acortar columnas, entre la B y la AT...

gracias

Posted

Hola nonano:

Esta macro oculta/muestra el rango "B:AT".

Sub OcultarMostrar()

Range("B:AT").EntireColumn.Hidden = Not Range("B:AT").EntireColumn.Hidden

End Sub

[/CODE]

Saludos

Posted

Pues a mi me funciona, si el rango está oculto, lo muestra, y en caso contrario, lo oculta y viceversa.

Posted

Perdon, Escribi mal.. lo que pasa es que ese llamado si me muestra y oculta.. el asunto es que me oculta aun con columnas con datos.. O sea, oculta todo.. absoluto.

saludos

  • 7 years later...
Posted

Hola Buenas tardes,

Como puedo hacer para esta macro de ocultar los valores en cero de la fila 13 del rango de columnas del 33 al 65
la macro cumple su cometido pero si quiero volver a mostrar todo incluido los valores en cero como seria ?
Agradeceré mucho si me apoyan, grcs

Sub Ocultar_Columna_y_mostrar()
Sheets("Hoja1").Select
For Col = 33 To 65
If Cells(13, Col) = 0 Then
Columns(Col).EntireColumn.Hidden = True
Else
Columns(Col).EntireColumn.Hidden = False
End If
Next
End Sub

Posted
En 13/4/2013 at 2:40 , Antoni dijo:

Sube un archivo y explica exactamente que es lo que deseas hacer.

 

En 11/4/2013 at 13:37 , Antoni dijo:

Hola nonano:

Esta macro oculta/muestra el rango "B:AT".

 


Sub OcultarMostrar()


   Range("B:AT").EntireColumn.Hidden = Not Range("B:AT").EntireColumn.Hidden


End Sub


[/CODE]

 

Saludos

 

Hace 17 minutos , rogermv27 dijo:

Hola Buenas tardes,

Como puedo hacer para esta macro de ocultar los valores en cero de la fila 13 del rango de columnas del 33 al 65
la macro cumple su cometido pero si quiero volver a mostrar todo incluido los valores en cero como seria ?
Agradeceré mucho si me apoyan, grcs

Sub Ocultar_Columna_y_mostrar()
Sheets("Hoja1").Select
For Col = 33 To 65
If Cells(13, Col) = 0 Then
Columns(Col).EntireColumn.Hidden = True
Else
Columns(Col).EntireColumn.Hidden = False
End If
Next
End Sub

Realice estos cambios y si funciono a lo que quiero, si esta bien la macro me corrigen por favor, muchas gracias por su tiempo

Sub Ocultar_Columna_y_mostrar()
Sheets("Hoja1").Select
For Col = 33 To 78
If Cells(13, Col) = 0 Then
Columns(Col).EntireColumn.Hidden = Not Columns(Col).EntireColumn.Hidden
Else
Columns(Col).EntireColumn.Hidden = False
End If
Next
End Sub
 

Archived

This topic is now archived and is closed to further replies.

  • 108 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      184
    • Comments
      96
    • Reviews
      28

    More information about "Un juego solitario en Excel"
    Latest File
    By pegones1

    4    0

  • Crear macros Excel

  • Posts

    • Hola. Tu archivo no tiene macros. Sobre las celdas combinadas, ya que no puedes evitar su uso al no ser tus archivos, lo mejor es "des combinarlas" previo a cualquier cosa, incluso en tu misma macro (que no envías). 
    • Hola buenas tardes tengo un archivo en excel que copia varias tablas y las importa a word de manera automatica. Este selecciona las tablas en base a las filas con datos de mi columna C. pueden ser  diferentes rango de tablas. (Pero siempre mi rango es de celdas continuas y con valores continuas) Funciona muy bien. El problema que ahora tengo es que muchos archivos con tablas  tienen las celdas combinadas ya sea horizontalmento o vertical. Aqui es donde empieza mi problema ya que son formatos de origen no puedo modificarlas. Quisiera ajustar mi macro en la parte de seleccion de rango de tablas y que pueda considerar la celdas combinadas y pegarlos en word sin problema. Ya que actualmente no me pone algunas tablas o rangos, o me repite las tablas y no considera las demas. Todo esto a que en algunas no hay valores o las celdas estan combinadas.   Muchas gracias Seleccion automatica de celdas combis.xlsx
    • por si te sirve: la primera matriz (pivotarpor) al inicio los que no tienen profesor asignado (orden ascendente por omision) la segunda (2 matrices y solo unicos) en el orden de aparicion (no asignados al final) la tercera (2 matrices) omite los no asignados (tambien por orden de aparicion) unicos y suma (ayudaExcel).xlsx
    • No se si este tema va aquí, si no es así, pido disculpas. Llevo varios días dando vueltas a un fallo que me sale al exportar una tabla a xml y que no consigo resolver. El fallo que me da es que no las asignaciones no son exportables y al comprobar la asignación me dice datos no normalizados.     Libro1.xlsx
    • Buenas tardes estimado JSDJSD, muchas gracias por responder. En efecto esta parte quedo perfecta. Pero me falto indicar que la macro se ejecute dependiendo de la celda L1 ( Caliza o Mezcla). Entonces si dice Caliza aplica la macro que me enviaste, pero si dice Mezcla que haga lo siguiente: Busque el  ultimo dato de la columna K de la hoja Mezcla Adición del libro Base de datos Cementos producido 2024, con la condición de que la columna B debe ser igual a 4 y el dato lo coloque en la celda N1 de la hoja Cemento del libro Cemento. Te comento que el libro Prehomo y Base de datos Cementos producidos 2024 están en carpetas diferentes ya que estos los maneja otra área, como se enmendaría este caso por el comentarios que me enviaste de la ruta. Saludos y un fuerte abrazo   Cemento-2.xlsm
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy