Numerador automático para facturas vba

Tengo el siguiente formulario:

Donde ya tengo el 80% configurado. Este formulario carga la información a la hoja "COMPROBANTE"

y a su vez carga a la hoja "BBDD"

Mi problema lo tengo en mi campo del formulario Nº COMPROBANTE, ya que este numero esta compuesto por AÑO-MES- 9 NUMEROS CONSECUTIVOS. En la hoja BBDD se lleva ese correlativo y necesito que el próximo COMPROBANTE sea el siguiente numero, y si paso de mes también lo cambie al igual año.

4 respuestas

Respuesta
2

Suponiendo que tu formulario lo tienes en un UserForm. Te anexo el código para obtener el siguiente consecutivo:

Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h2 = Sheets("BBDD")
    mes = Format(Month(Date), "00")
    año = Year(Date)
    ult = h2.Range("B" & Rows.Count).End(xlUp).Row
    num = h2.Cells(ult, "B")
    dat = Split(num, "-")
    If UBound(dat) = 2 Then
        con = Format(dat(2) + 1, "000000000")
        fin = año & "-" & mes & "-" & con
        TextBox1 = fin
    Else
        MsgBox "Revisar el último consecutivo en la Base de Datos", vbExclamation, "Error al cargar el consecutivo"
    End If
End Sub

Cambia "BBDD" por el nombre de tu hoja donde tienes los consecutivos.

Cambia TextBox1 por el control donde quieres poner el nuevo consecutivo.

Si tienes problemas para adaptar el código a tu formulario, envíame tu archivo a mi correo. No olvides poner tu nombre de usuario en el asunto.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Respuesta

Pero te puedo dar una idea para resolver tu problema:

En una hoja "Configuraciones", guardar el número/nombre del mes y su número consecutivo. Para obtener el próximo valor, comprobar si el valor del mes es el mismo al actual, si sí, solamente aumentarle una unidad al número consecutivo y tomarlo. Si no es igual el valor del mes al actual, modificar el valor del mes por el valor del mes actual, y asignarle al campo número consecutivo un valor inicial (supongo que "1").

Respuesta

Dado que la informacion que manejes en la macro queda almacenada en la ram, no seria posible almacenar este consecutivo, asi que deberias guardarlo en una celda, puedes con la funcion contara y texto para darle los ceros

Ya despues en la macro concatenaras el consecutivo con el valor de los textbox del formulario, por ejemplo:

Sub test()
Dim a As Date
a = "17/06/15"
MsgBox (CStr(Year(a)) + "-" + CStr(Month(a)) + "-" + Range("Consecutivo").Value)
End Sub

Si tienes alguna duda, pregunatame.

¡Gracias! Víctor por tu ayuda, el código que me enviaste es para un Mensaje, pero como hago para que este se vea en mi formulario y cuando vuelva hacer otro comprobante me tome el ultimo numero

Asigna a una variable el valor del textbox de la fecha ejemplo, como necesitamos que sea tomado como fecha usamos la función CDate()

a=CDate(textboxfecha.value)

Y usas el mismo procedimiento que haces para el resto de campos.

Si quieres, me puedes enviar tu archivo a [email protected], y te ayudo con el código faltante.

Respuesta

ATENCION: En este ejemplo vamos a suponer que el botón de tu macro se llama BOTON1, y que la celda donde quieres que aparezca el correlativo de tu NUMERO DE COMPROBANTE, sea en la celda B3, en este caso te debe servir con lo siguiente

Sub Botón1_Haga_clic_en()
[b3] = [b3] + 1
End Sub

Luego simplemente te vas a la celda B3 y en FORMATO DE CELDAS, le das el formato de fecha de tu elección.

A tu orden.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas