Numerador Automtico Para Facturas o Recibos en Excel

  • Published on
    06-Oct-2015

  • View
    26

  • Download
    2

DESCRIPTION

paso a paso como numerar facturas automaticamente en excel

Transcript

  • Numerador automtico para facturas o recibos en Excel

    Con Excel es fcil crear plantillas para facturas o recibos. Ms an, se pueden

    descargar gratuitamente de varios sitios. La plantilla del ejemplo que usar en esta

    nota fue descargada del sitio de Microsoft.

    Una de las consultas que recibo frecuentemente, es cmo crear un numerador

    automtico para facturas o recibos en hojas de Excel. Si observan la plantilla de la

    factura, vern que la celda C5 contiene el nmero de factura.

    Lo que queremos hacer es que este nmero se actualice cada vez que emitimos

    una factura, de manera que la siguiente tenga el nmero consecutivo (el archivo

    con el ejemplo se puede descargar aqu aunque recomiendo el nuevo modelo que

    incluye base de datos de las facturas producidas).

    Esto se puede hacer de varias maneras, pero todas implican usar macros.

    Una solucin sencilla es agregar un botn al que le asociamos una macro. El

    botn lo creamos copindolo de la barra de formularios.

  • Pulsamos el botn Nuevo, lo que abre un mdulo de Vba con el evento Sub

    Botn3_AlHacerClic(). Aqu escribimos este cdigo

    [C5] = [C5] + 1

    Ahora, cuando apretamos el botn el valor en la celda C5 se incrementar en 1.

    Esta tcnica es muy sencilla, pero no ofrece ninguna ventaja frente al sencillo

    mtodo de cambiar el valor en la celda manualmente. Adems, si nos olvidamos

    de presionar el botn, la prxima factura saldr con el mismo nmero.

    Una forma de lograr algn tipo de control es ligar el botn a la accin de sumar los

    importes de la factura. Es decir, hasta que no apretemos el botn no aparecer la

    suma total de la factura en la celda correspondiente (la celda C35 en nuestra

    plantilla).

    Empezamos por eliminar la frmula en la celda C35. Teniendo en cuenta que el

    rango de los montos de las lneas de la factura es C18:C34, modificamos nuestro

    cdigo, para que sume los valores de las celdas del rango y luego cambie el

    nmero de factura

  • Sub Botn3_AlHacerClic()

    [C35] = WorksheetFunction.Sum(Range("C18:C34"))

    [C5] = [C5] + 1

    End Sub

    Otra alternativa es que el nmero de factura cambie automticamente en las

    circunstancias debidas, por ejemplo antes de imprimirla.

    Para esto debemos usar un tipo de macro especiales llamadas "eventos".

    Eventos son macros que actan cuando, como su nombre lo sugiere, algo sucede

    en la hoja, o el objeto, al cual estn ligadas. Los eventos sern tema de una futura

    nota, como vengo prometiendo. En esta nota nos limitaremos a un ejemplo

    prctico.

    Para saber qu eventos existen ligados al objeto, en nuestro caso el cuaderno que

    contiene la hoja con la factura, pasamos al editor de Vba y hacemos doble clic al

    icono ThisWorkbook,

  • Abrimos la lista desplegable de la ventanilla donde aparece General y elegimos

    Workbook

    Abrimos la ventanilla contigua para ver qu eventos estn a nuestra disposicin

    Como podemos ver, existe un evento BeforePrint, es decir "antes de imprimir".

    Ponemos el cdigo anterior en este evento

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    [C35] = WorksheetFunction.Sum(Range("C18:C34"))

  • [C5] = [C5] + 1

    End Sub

    Ahora, cuando queramos imprimir la factura, ya sea con el icono de impresin o

    con el men Archivo-Imprimir, se disparar el evento, el nmero de la factura

    aumentara en 1 y el total ser recalculado.

    Para mejorar nuestro evento, podemos incluir la posibilidad de cancelar la

    impresin. Lo que haremos es agregar algunas lneas de cdigo

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Dim Mensaje, Resp

    Dim dlgPrint As Boolean

    Mensaje = "El total es " & [C35] 'Total

    Mensaje = Mensaje & " Imprimir?"

    Resp = MsgBox(Mensaje, vbQuestion + vbYesNo)

    On Error GoTo errNoPrint

    If Resp = vbYes Then

    Application.EnableEvents = False

    [C5] = [C5] + 1

    dlgPrint = Application.Dialogs(xlDialogPrint).Show

    If dlgPrint = False Then

    [C5] = [C5] - 1

    Cancel = True

    Application.EnableEvents = True

    Exit Sub

    End If

    Else

    Cancel = True

    Application.EnableEvents = True

    End If

    Application.EnableEvents = True

    Exit Sub

    errNoPrint:

  • [C5] = [C5] - 1

    Cancel = True

    Application.EnableEvents = True

    End Sub

    Primero calculamos el total; luego producimos un mensaje donde exponemos el

    total y damos la opcin de cancelar la impresin

    Si el usuario aprieta No, el proceso de impresin se detiene y el nmero de la

    factura no cambia.

    Como se puede ver, con algunas lneas de cdigo puestas en el lugar

    correspondiente, podemos lograr una aplicacin bastante prctica. El cuaderno

    con la factura puede descargarse aqu

    Si usamos el evento BeforePrint, el botn es innecesario y puede ser eliminado.

Recommended

View more >