Ocultar columnas mediante cuadro combinado

10/05/2007 - 11:00 por bettyblue30 | Informe spam
Hola a todos. Soy bastante novata en lo que se refiere al lenguaje
VBA, y me gustaría saber si alguien me puede ayudar a crear una macro
que oculte columnas. En particular tengo una hoja en la que en cada
columna se encuentran datos referentes a un determinado mes del año.
Lo que necesito es una macro que en función del mes que escriba en una
celda de la hoja, me oculte todas las columnas que no se correspondan
con el mes seleccionado.

Me han comentado que también en vez de tener que escribir el mes que
quiero que quede visible, se podría hacer con un cuadro combinado,
pero ahí estoy aún más perdida.

Alguien me puede ayudar?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
10/05/2007 - 22:10 | Informe spam
hola, betty ?

... crear una macro que oculte columnas
... tengo una hoja en la que en cada columna se encuentran datos referentes a un determinado mes del a#o.
... necesito... que en funcion del mes que escriba en una celda de la hoja
... oculte todas las columnas que no se correspondan con el mes seleccionado.
... se podría hacer con un cuadro combinado, pero ahí estoy aun más perdida...



si suponemos que la celda de la hoja donde escribes el mes es 'A1'
y que las columnas donde estan los correspondientes [nombres de] meses son C:N en la fila 1

1) selecciona la celda 'A1' y ve a [menu] datos / validacion
usa la opcion de Lista e introduce manualmente los nombres separados por coma?... punto_y_coma?

2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja:
-> haz un click-secundario sobre la etiqueta con su nombre y selecciona: -> ver codigo

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Dim Col As Byte
For Col = 3 To 14
Columns(Col).EntireColumn.Hidden = Cells(1, Col) <> Target
Next
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 bettyblue30
11/05/2007 - 09:25 | Informe spam
On 10 mayo, 22:10, "Héctor Miguel"
wrote:
hola, betty ?

> ... crear una macro que oculte columnas
> ... tengo una hoja en la que en cada columna se encuentran datos referentes a un determinado mes del a#o.
> ... necesito... que en funcion del mes que escriba en una celda de la hoja
> ... oculte todas las columnas que no se correspondan con el mes seleccionado.
> ... se podría hacer con un cuadro combinado, pero ahí estoy aun más perdida...

si suponemos que la celda de la hoja donde escribes el mes es 'A1'
y que las columnas donde estan los correspondientes [nombres de] meses son C:N en la fila 1

1) selecciona la celda 'A1' y ve a [menu] datos / validacion
usa la opcion de Lista e introduce manualmente los nombres separados por coma?... punto_y_coma?

2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja:
-> haz un click-secundario sobre la etiqueta con su nombre y selecciona: -> ver codigo

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Dim Col As Byte
For Col = 3 To 14
Columns(Col).EntireColumn.Hidden = Cells(1, Col) <> Target
Next
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Hola Hector,

No lo debo estar haciendo bien, te cuento.

He seguido tus instrucciónes, y al seleccionar el mes que quiero ver
en el listado desplegable, lo que hace es ocultarme todas las columnas
anteriores a dicho mes, es decir, si señalo el mes de junio, me oculta
desde enero hasta junio y me muestra desde julio a diciembre, cuando
lo que busco es que me muestre solo junio y me oculte el resto de
columnas de los otros meses.
Que es lo que estoy haciendo mal?

Por otro lado, el listado solo me permite elegir un mes, que tendría
que hacer si por ejemplo quisiera que me mostrara las columnas
correspoondientes al segundo trimestre (abril, mayo y junio) o todos
los meses?

muchas gracias por tu ayuda

Betty
Respuesta Responder a este mensaje
#3 Héctor Miguel
11/05/2007 - 22:01 | Informe spam
hola, Betty !

__ 1 __
He seguido tus instrucciónes, y al seleccionar el mes que quiero ver en el listado desplegable
lo que hace es ocultarme todas las columnas anteriores a dicho mes, es decir
si se#alo el mes de junio, me oculta desde enero hasta junio y me muestra desde julio a diciembre
cuando lo que busco es que me muestre solo junio y me oculte el resto de columnas de los otros meses.
Que es lo que estoy haciendo mal?



1) alguno de mis supuestos para el ejemplo de la propuesta anterior, es diferente de la realidad ?...
" > si suponemos que la celda de la hoja donde escribes el mes es 'A1' "
" > y que las columnas donde estan los correspondientes [nombres de] meses son C:N en la fila 1 "

__ 2 __
Por otro lado, el listado solo me permite elegir un mes, que tendria que hacer
si por ejemplo quisiera que me mostrara las columnas correspoondientes al segundo trimestre (abril, mayo y junio)
o todos los meses?



2) [en principio]... tomar la decision de si prefieres/necesitas/... que sean 'filtros' mensuales ?... o trimestrales -???-

comentas [si hubiera] alguno otro detalle 'en el tintero' ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Héctor Miguel
13/05/2007 - 05:00 | Informe spam
hola, Betty !

para la segunda inquietud que planteas:
Por otro lado, el listado solo me permite elegir un mes, que tendria que hacer
si por ejemplo quisiera que me mostrara las columnas correspoondientes al segundo trimestre (abril, mayo y junio)
o todos los meses?



y continuando con los mismos 'supuestos':
si suponemos que la celda de la hoja donde escribes el mes es 'A1'
y que las columnas donde estan los correspondientes [nombres de] meses son C:N en la fila 1



copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If IsEmpty([a1]) Then Columns("c:n").EntireColumn.Hidden = False: Exit Sub
Columns("c:n").EntireColumn.Hidden = True
Columns(Evaluate("match(match(a1,c1:n1,0),{1,4,7,10})*3-2") + 2) _
.Resize(, 3).EntireColumn.Hidden = False
End Sub

-> y cuando quieras mostrar todas las columnas, [simplemente] borras el contenido de la celda 'A1' ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 bettyblue30
13/05/2007 - 17:44 | Informe spam
On 13 mayo, 05:00, "Héctor Miguel"
wrote:
hola, Betty !

para la segunda inquietud que planteas:

> Por otro lado, el listado solo me permite elegir un mes, que tendria que hacer
> si por ejemplo quisiera que me mostrara las columnas correspoondientes al segundo trimestre (abril, mayo y junio)
> o todos los meses?

y continuando con los mismos 'supuestos':

> si suponemos que la celda de la hoja donde escribes el mes es 'A1'
> y que las columnas donde estan los correspondientes [nombres de] meses son C:N en la fila 1

copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If IsEmpty([a1]) Then Columns("c:n").EntireColumn.Hidden = False: Exit Sub
Columns("c:n").EntireColumn.Hidden = True
Columns(Evaluate("match(match(a1,c1:n1,0),{1,4,7,10})*3-2") + 2) _
.Resize(, 3).EntireColumn.Hidden = False
End Sub

-> y cuando quieras mostrar todas las columnas, [simplemente] borras el contenido de la celda 'A1' ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Hola Hector

Lo primero decirte que las dos macros funcionan perfectamente, sólo
que para el caso de la segunda no era eso del todo lo que estaba
buscando. Te cuento, no es que la macro sea para mostrar los meses o
los trimestres unicamente. Lo que te decía era que si es posible de
alguna forma que con una macro y mediante botones de comandos pueda
hacer que me enseñe (es decir, no me oculte) las columnas que yo
kiera. Por ejemplo, si en algún momento necesito comparar los datos
correspondientes a los meses de enero, junio y diciembre, me muestre
esas columnas y me oculte el resto. Lo mismo si sólo kiero ver uno de
los meses, o ver todos los meses menos agosto en fin, las
infinitas posibilidades con los 12 meses

Estoy pidiendo un imposible??????

Muchas gracias por tu continua ayuda.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida