¡Gracias por visitar Tecno Academy!                     Informática, todos los niveles - Trucos - Apuntes - Diapositivas - Libros - Enlaces - Curiosidades - Descargas - Tecnologías - Opiniones - Podcasting, Byte - Internautas TV - Pizarra Virtual                   

martes, 17 de marzo de 2009

Facturas en Excel con número autoincremental


Uno de los usos más comunes y prácticos de Excel es la elaboración de facturas. Incluso aquellos que no poseen conocimientos suficientes para elaborar las suyas propias pueden disfrutar de multitud de plantillas configurables que se descargan de forma completamente gratuíta del propio sitio de Microsoft, sin necesidad de componer ni una sola fórmula. No obstante, uno se da cuenta enseguida de que disponer de un modelo de factura sin más supone que la numeración de las facturas debe ser controlada por uno mismo de forma manual. Lo ideal sería que cada vez que abro un libro de facturación se crease una nueva hoja con una nueva factura cuyo número fuese el de la anterior incrementado en una unidad. De esta manera, podría despreocuparme, no sólo de la numeración, sino también de tener que hacer una copia manual de la plantilla de la factura cada vez que voy a facturar y podría tener todas las facturas en un único libro en vez de tener un libro para cada factura.

Para materializar esta idea tendremos en la "Hoja1" del libro un modelo de factura con todas las fórmulas necesarias. En nuestro ejemplo, el número de factura inicial está ubicado en la celda A5. Cada vez que cierre el libro, va a crearse una nueva hoja con una copia de la factura original pero cuyo número se verá incrementado en una unidad. Además, para facilitar el reconocimiento de las facturas, el nombre de la hoja coincidirá con el número de factura correspondiente.

El proceso es simple. Hay que ir al editor de Visual Basic mediante el menú Herramientas->Macro->Editor de Visual Basic. En el margen izquierdo del editor aparece un árbol con todos los objetos de Excel disponibles. Hacemos doble clic en ThisWorkBook (el libro de trabajo actual).




En la pantalla de código que aparece escribimos las siguientes líneas, cambiando en su caso "A5" por la celda donde realmente tenga el número de la factura:

Private Sub Workbook_Open()
Sheets(1).Range("A5").Value = Sheets(1).Range("A5") + 1
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets(1).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets(1).Range("A5").Value
End Sub



Guardamos los cambios y cerramos el editor. Ahora ya podemos comprobar que efectivamente, cada vez que cerramos el libro, se crea una nueva hoja con el siguiente número de factura lista para ser rellenada.