Seleccionar Filas Con VB

La duda es la que sigue.
Tengo un a hoja excel con a1 nombre, a2 dato, a3 importe y esto en varias filas . Como puedo hacer por medio de vb, al accionar un botón, ¿qué las filas que no tienen importe ( 0,00) queden ocultas para imprimir solo las que tienen valor y luego restaurarlo con otro botón después de imprimir?

1 Respuesta

Respuesta
1
Tocaste un nervio nostálgico con tu pregunta.
Hace algunos años atrás, cuando usaba el viejo y querido Lotus 123 tenía una fórmula que -sin necesidad de ocultar/mostrar- impedía que se imprima una fila en base a una condición que, usualmente, era si una celda tenía un valor cero.
Al migrar a MS Excel, perdí esa posibilidad y pese a las muchas consultas que planteé sobre el tema, todas las respuestas me informaban que eso no es posible en MS Excel.
Por lo tanto, hay que buscar alternativas.
Tal vez la más sencilla sea aplicar un filtro automático y, al momento de imprimir, seleccionar aquellos distinto de cero para tu columna "A". Luego Muestras todo o quitas el filtro automático.
---
Una solución de mayor nivel sería utilizar una macro que se ocupe de ocultar las filas.
Y esta sería tu macro (inserta un módulo nuevo en el Editor de Visual Basic):
Sub OcultaLin()
'Oculta líneas según el siguiente criterio:
'============
CharKey = 0
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = CharKey Then
ActiveCell.EntireRow.Hidden = True
Else
ActiveCell.EntireRow.Hidden = False
End If
ActiveCell.Offset(1).Select
Loop
End Sub
Así, recorre la columna A ocultando o mostrando filas según el valor, hasta que encuentra una celda vacía (Final de Rango).
Si tuvieras celdas intermedias de separación. Deberías cambiar el esquema de "Do While" por uno del tipo:
Range("A2:A814").Select 'indicas el rango a considerar
For each cell in Selection
<macro>
Next cell
También, puedes agregarle un comando de impresión para que:
- Oculte
- Imprima
- Muestre todas las celdas.
Esto último con una instrucción tan simple como esta:
Rows("2:814").EntireRow.Hidden = False
Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices.
Si no, pregúntame de nuevo.
(Considera que la valoración que figura predeterminada
es 3/5. Tal vez quieras cambiarla...)
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas