Saltar al contenido

Ocultar columna en 0.


falexramos

Recommended Posts

publicado

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...
publicado

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

publicado

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...
publicado
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

publicado

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

publicado

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

publicado

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...
publicado

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

publicado
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
 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.