Ocultar filas |
Responder |
Autor | |
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Tema: Ocultar filas Enviado: 05/Septiembre/2022 a las 06:43 |
Hola a todos.
Bebo generar un reporte mensual en una tabla y quisiera ocultar las filas que no tengan valores. Es decir, la tabla esta diseñada para mostrar datos en 36 filas, si hay un reporte que solo tenga datos en ,digamos 32 filas, desearía ocultarlas filas 33 a la 36. He construido la siguiente macro, pero me da error Sub Macro20() ' Dim m ' m = Range("c5").Value ' Rows("m:36").EntireRow.Hidden = True End Sub La celda "c5" contiene el número siguiente de la ultima fila de la tabla que tiene algún valor/dato. El error lo genera en la instrucción Rows("m:36") "type mismatch" Como puedo resolverlo Gracias |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5970 |
Enviado: 05/Septiembre/2022 a las 13:49 |
Considerando que m es la primera fila a ocultar:
Range("A" & m & ":A36").EntireRow.Hidden = True |
|
Saludos desde Tenerife.
|
|
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Enviado: 05/Septiembre/2022 a las 17:33 |
Gracias AnSanVal, tu sugerencia me ha resultado bien.
Sin embargo, me ha surgido otro problema. He desarrollado la siguiente macro, pero no hace absolutamente nada. Quisiera tu ayuda para saber que no estoy haciendo correctamente. Private Sub Worksheet_Change(ByVal Target As Range) Dim m m = Range("c5").Value If Target.Address = "B5" Then 'En la celda B5 selecciono el mes que deseo ver Application.ScreenUpdating = False Range("A20:A36").EntireRow.Hidden = False 'Primero muestro todas las celdas y luego oculto aquellas donde no hay valores/datos Range("A" & m & ":A36").EntireRow.Hidden = True Application.ScreenUpdating = True End If End Sub Gracias
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3849 |
Enviado: 05/Septiembre/2022 a las 17:59 |
Prueba poniéndolo así:
If Target.Address = "$B$5" Then Y ya puestos, yo cambiaría m = Range("c5").Value If Target.Address = "B5" Then por If Target.Address = "$B$5" Then m = Range("c5").Value Solo por ahorrar in instante.... Un saludo. Luis
|
|
El Búho es un pajarraco
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5970 |
Enviado: 05/Septiembre/2022 a las 18:09 |
La ejecución nunca podrá trabajar dentro de tu condicional, debido que Target.Address nunca podra ser igual a B5. ► Target.Addres(False,False) = B5 ► Target.Addres(True,True) o Target.Addres = $B$5 ► Para «curarte en salud» yo incluiría lo que te pongo en rojo y negrita: Sub algo() Dim m m = Range("c5").Value
If Target.Address = "$B$5" Then Application.ScreenUpdating = False Range("A20:A36").EntireRow.Hidden = False If m < 37 Then Range("A" & m & ":A36").EntireRow.Hidden = True End If Application.ScreenUpdating = True End If End Sub Editado ASV: Lo de Sub algo() no lo tengas en cuenta, lo hice en un módulo ordinario para mis pruebas.
Editado por AnSanVal - 05/Septiembre/2022 a las 18:26 |
|
Saludos desde Tenerife.
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5970 |
Enviado: 05/Septiembre/2022 a las 18:14 |
Luis; nos cruzamos en el camino... mientras mirábamos las nubes.
|
|
Saludos desde Tenerife.
|
|
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Enviado: 05/Septiembre/2022 a las 20:29 |
Hola a todos, gracias por su tiempo e interés en este hilo
La sugerencia de AnSanVal me ha funcionado bien: Range("A" & m & ":A36").EntireRow.Hidden = True
Ahora bien, si incluyo la instrucción:
Me dice:
Si hago "click" en el botón depurar (debug) me sombrea en amarillo la instrucción: If Target.Address = "$B$5" Then Por otra parte, mi interés es incluir la macro completa dentro de:
De tal manera que se actualice al cambiar el valor de la celda B5 Pero no hace absolutamente nada No se que pueda estar haciendo mal..... Agradecido con su ayuda
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3849 |
Enviado: 06/Septiembre/2022 a las 10:36 |
Claro que te da error, ahora no tienes Target.
Si pones la función como Private Sub Worksheet_Change(ByVal Target As Range) le estás pasando Target como una variable, pero si pones Sub algo() no estás pasando esa variable y te va a fallar. Ahora bien, como dice AnSanVal, si en B5 pones el valor 47, vas a tener un problema, porque está fuera del rango que intentas comprobar, pero eso a la macro le da igual. Por lo tanto te recomiendo algo como: Sub Worksheet_Change(ByVal Target As Range) Dim m m = Range("c5").Value If Target.Address = "$B$5" Then Application.ScreenUpdating = False Range("A20:A36").EntireRow.Hidden = False If m < 37 Then Range("A" & m & ":A36").EntireRow.Hidden = True End If Application.ScreenUpdating = True End If End Sub Luis
|
|
El Búho es un pajarraco
|
|
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Enviado: 06/Septiembre/2022 a las 20:25 |
Gracias amigos, me ha resultado bien la última propuesta de Luis.
Se puede cerrar el hilo Muy agradecido |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |