Hace poco tuve un requerimiento en el cual debía generar un reporte con Excel a partir de una plantilla base. El core del asunto es que no podía saber de antemano cual era la cantidad de registros que iba a tener el reporte y las filas del mismo debían contar con un formato especial.
Consideré que se veía horrible si dejaba simplemente toda la hoja de Excel con el formato preestablecido (este consistía en celdas con bordes, algunas con fondos de diversos colores, formatos de fecha y de contabilidad), así que decidí ubicar en la plantilla una única fila con dichos formato y, en tiempo de ejecución, replicar esa fila "base" tantas veces como fuera necesario.
Para ello, desde el sistema que hace las veces de modelo y control de este desarrollo, incluí una linea adicional que agregaba en una celda especifica de la hoja de Excel la cantidad de registros que debía incluir el reporte.
La macro resultante que deseo compartir es la siguiente:
Como es de suponer, en la variable cant se recoge el valor que indica la cantidad de filas en las cuales esta macro debe replicar el formato. La variable val indica la fila en la cual se comienza a replicar el formato (la fila base es la 3 y en esa fila también va información, por eso se resta 1).
Luego del bucle que replica el formato de la fila, se borra de la celda B1 el valor que indicaba la cantidad de registros del reporte.
Esta forma de replicar formatos de fila puede ser muy simple cuando no se tenga precisamente un formato fijo (en este caso, se aprovechó que el reporte siempre empezaba en la columna B y acababa en la columna V) pero se pueda extrapolar a otros escenarios.
Si alguien que lea esta lineas puede encontrar la forma de realizar la misma acción sin necesidad del bucle, le agradecería que nos compartiera su solución.