Saltar al contenido

Salto de página cada cierta cantidad de filas


jik

Recommended Posts

publicado

Hola. Necesito hacer una macro para que se inserten saltos de página cada una determinada cantidad de filas en un libro que tiene unas 10.000 filas aproximadamente. 

Gracias

publicado

Hola @jik, para que te podamos ayudar adecuadamente debes explicar mejor tu problema y adjuntar un archivo excel de ejemplo con lo que esperas de resultado.

Te dejo una idea para que puedas adaptarlo a tu archivo.

Sub insertar_filas()

For i = 1 To 10000 Step 4

Cells(i, 1).EntireRow.Insert Shift:=xlDown

Next

End Sub

saludos.

publicado

Hola. Muchas gracias.

No tengo un archivo pero lo que necesito es algo para uso general.

Lo que tú me has enviado inserta filas. Yo necesito insertas saltos de página cada una cierta cantidad de filas. Por ejemplo: insertar un salto de página cada 40 filas.

Saludos.

publicado

@jik, prueba así.

Sub insertar_filas()

For i = 40 To 1000 Step 40

ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A" & i + 1)

Next

End Sub

El archivo es por normas del foro, puedes armar un pequeño ejemplo con solo datos ficticios, tómalo en cuenta para futuras consultas.

Saludos.

publicado

Hola de nuevo. La macro me daba un error en la segunda línea pero la corregí cambiando por número de fila.

Sub insertar_filas()

Application.ActiveSheet.ResetAllPageBreaks

For i = 40 To 1000 Step 40

ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i + 1)

NextDemo.xlsx

End Sub

 

Ahora tengo una complicación adicional que es que tengo que insertar el salto de página cada 40 filas VISIBLES. Con esto quiero decir que si por ejemplo, hay fila ocultas, éstas no se consideren para la  cuenta de líneas del salto de página.

Adjunto el archivo donde he ocultado las filas de 10 a 20 y 70 a 80.

Para que funcione como yo quiero, el salto de página debería ir en la línea 51 (1 + 40 filas + 10 filas ocultas)

El siguiente salto sería de la 52 a la 102 porque también hay 10 ocultas y así sucesivamente.

Aclaro que el número de fila ocultas no es fijo (en mi ejemplo fueron 10 las 2 veces pero podría 5 una vez, 20 otra vez, etc).

 

publicado

@jik, basado en tu ejemplo, con esta modificación debería funcionar sin importar donde o cuantas celdas ocultas tengas.

Sub insertar_filas()
Dim x#, celda As Range

Application.ActiveSheet.ResetAllPageBreaks

For Each celda In Range("A1", Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible)
    x = x + 1
    If x = 40 Then
        x = 0
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(celda.Row + 1)
    End If
Next

End Sub

Comentas, saludos.

publicado

Pues a mi no me funciona. Ya lo probé y sólo borra los saltos de página.

No faltará un "Else" o algo así?

Donde termina esta fórmula? Necesitaría darle un fin en, por ejemplo, la fila 10.000

Gracias

publicado

Imagino que en el archivo donde lo probaste tienes filas en blanco antes del primer salto de linea, creo que ese es el error.

Hace 8 minutos , jik dijo:

No faltará un "Else" o algo así?

No es necesario solo estoy contando 40 lineas de lo contrario simplemente no hace nada.

 

Hace 9 minutos , jik dijo:

Donde termina esta fórmula? Necesitaría darle un fin en, por ejemplo, la fila 10.000

Le indico en esta linea Range("A1", Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible) que apartir de la celda A1 se vaya a la ultima celda con datos, por eso si tienes alguna celda vacía por ejemplo en la fila 12 hasta ahí llega ciclo for. 

Prueba ahora con esta modificación, no es necesario indicar la cantidad de filas ya que encontrara la ultima fila de la columna A con datos, esto es conveniente si tus datos van a crecer aun mas.

Sub insertar_filas()
Dim x#, celda As Range

Application.ActiveSheet.ResetAllPageBreaks

For Each celda In Range("A1", Range("A" & Cells.Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
    x = x + 1
    If x = 40 Then
        x = 0
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(celda.Row + 1)
    End If
Next

End Sub

De igual manera y por aquello puedes usar esta linea también 

For Each celda In Range("A1:A10000").SpecialCells(xlCellTypeVisible)

Saludos.

Archivado

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

  • 109 ¿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
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola, Parece un Kardex aunque al final me he perdido, entendí que necesita sumar las producciones siempre y cuando no pasen un punto del día. Tal vez algún Maestro o usuario avanzado pueda aportar algo con la información que ha compartido, pero en mi caso no comprendí por qué si  el prod1 tuvo una producción de 90 entonces cómo definió restarle ese 78, ¿es por qué tiene un NO en el "cumple"? Y luego termina en -12 porque le restó 24 que tampoco pude deducir cómo se determinaron. Le recomiendo hacer un ejemplo de un solo ITEM que deba ser afectado por las reglas que compartió y con los resultados que serían los correctos esperados.
    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.