Folio consecutivo en vba excel userform, que cuando se de en registrar me muestre en un cuadro el numero de folio registrado?
Tengo un problema en un formulario que me sirve para registrar los productos que van entrando a la empresa, actualmente se maneja de esta manera cuando entra un producto se captura en el formulario creado, cuando se clic en el botón registrar este guarda todos los datos en una hoja de Excel empezando desde la columna “B”. Toda la fila a de arriba para abajo esta foliada personalizada mente de esta manera BM1, BM2, BM3 y así sucesivamente conforme se van capturando los datos.
Lo que quiero hacer es que, desde el formulario al dar registrar, una nueva entrada me saque un cuadro de dialogo en donde me diga que número de folio consecutivo se le dio a ese registro. Es decir que, si el último registro tuvo un folio BM3, que el siguiente sea el BM4 me lo muestre en un cuadro de dialogo al dar en registrar y me lo capture en la hoja donde se guardan los registros en otra columna más.
Espero me allá podido explicar. Muchas gracias.
Esta es la captura en donde se van guardando los registros, acutualmente hay 30162 registros capturados, lo que se pone manual es la columan "A" la que son los folios Personalizados BMXXX
Por lo que entiendo el folio (columna A) no lo resuelve en automático, ¿cierto?
¿Lo qué buscas es que sólo te dé el folio o bien que además lo grabé en la Celda correspondiente?
Me ayuda si me proporcionas tu código. Si no es posible por alguna razón con responderme las dos preguntas anteriores creo que lo podemos resolver.
Hola es correcto la columna "A" no lo resuelve en automático. busco que me de el folio que sigue y lo grabe en la celda correspondiente. junto con los demás datos del formulario y de igual manera que en una etiqueta en el formulario me muestre el folio siguiente es decir el folio que corresponde a esa captura.
el folio necesito que quede esta maneara EJEMPLO: BM30129 si es muy complicado solo con los numero.
te agradezco mucho me puedas ayudar
Private Sub boton_fecha_Click() txtfecha = Date End Sub Private Sub btcalendario_Click() senal = 0 senal = 1 rutinas.Mostarcalendario '2 Paso End Sub Private Sub ComboBox1_Change() End Sub Private Sub CommandButton1_Click() Dim Fila As Integer Dim Final As Integer Dim Registro As Integer Dim Titulo As String Titulo = "Gestor de Inventarios" 'Validando los controles sin datos If Me.txt_numerofac = "" Then Me.txt_numerofac.BackColor = &HC0C0FF MsgBox "Debe ingresar una numero de factura", , Titulo Me.txt_numerofac.SetFocus Exit Sub ElseIf Me.txt_descripcion = "" Then Me.txt_descripcion.BackColor = &HC0C0FF MsgBox "Debe ingresar una descripción", , Titulo Me.txt_descripcion.SetFocus Exit Sub ElseIf Me.ComboBox1 = "" Then Me.ComboBox1.BackColor = &HC0C0FF MsgBox "Debe ingresar un centro de costo", , Titulo Me.ComboBox1.SetFocus Exit Sub ElseIf Me.Txt_color = 0 Then Me.Txt_color.BackColor = &HC0C0FF MsgBox "Debe ingresar el Color", , Titulo Me.Txt_color.SetFocus Exit Sub ElseIf Me.txt_serie = 0 Then Me.txt_serie.BackColor = &HC0C0FF MsgBox "Debe ingresar un numero de serie", , Titulo Me.txt_serie.SetFocus Exit Sub ElseIf Me.txt_marca = 0 Then Me.txt_marca.BackColor = &HC0C0FF MsgBox "Debe ingresar un numero de marca", , Titulo Me.txt_marca.SetFocus Exit Sub ElseIf Me.txt_CostoUnitario = 0 Then Me.txt_CostoUnitario.BackColor = &HC0C0FF MsgBox "Debe ingresar un precio", , Titulo Me.txt_CostoUnitario.SetFocus Exit Sub ElseIf Me.txt_PrecioVenta = 0 Then Me.txt_PrecioVenta.BackColor = &HC0C0FF MsgBox "Debe ingresar un precio", , Titulo Me.txt_PrecioVenta.SetFocus Exit Sub End If 'Determina el final del listado de productos For Fila = 1 To 9000 If Hoja2.Cells(Fila, 2) = "" Then Final = Fila Exit For End If Next If MsgBox("Son correctos los datos?" + Chr(13) + "Desea proceder?", vbOKCancel) = vbOK Then 'Envía los datos a la hoja de productos Hoja2.Cells(Final, 2) = Me.txt_numerofac Hoja2.Cells(Final, 3) = Me.txt_descripcion Hoja2.Cells(Final, 4) = Me.ComboBox1 Hoja2.Cells(Final, 5) = Me.Txt_color Hoja2.Cells(Final, 6) = Me.Txtncalendario Hoja2.Cells(Final, 7) = Me.txt_serie Hoja2.Cells(Final, 8) = Me.txt_marca Hoja2.Cells(Final, 9) = Me.txtfecha Hoja2.Cells(Final, 10) = Me.txt_CostoUnitario Hoja2.Cells(Final, 11) = Me.txt_PrecioVenta Hoja2.Cells(Final, 12) = Hoja8.Range("G1") 'Usuario responsalbe de la operación '----------------------------------------------- 'Envía los datos a la hoja de existencias '----------------------------------------------- 'Limpia los controles Me.txt_descripcion = "" Me.Txtncalendario = "" Me.txt_CostoUnitario = "" Me.txt_PrecioVenta = "" Me.Txt_color = "" Me.txt_serie = "" Me.txt_marca = "" Me.txtfecha = "" Me.txt_numerofac = "" Me.ComboBox1 = "" Else Exit Sub End If End Sub
Jhone;
Te mando lo que trabajé, desde mi punto de vista debería funcionar según lo que vi en el código que me enviaste. Aunque me ayudaría si me mandas el Libro aunque sea con datos inventados para probarlo o corregir en caso de que no te funciones. Mi correo [email protected]
Private Sub boton_fecha_Click() txtfecha = Date End Sub Private Sub btcalendario_Click() senal = 0 senal = 1 rutinas.Mostarcalendario '2 Paso End Sub Private Sub ComboBox1_Change() End Sub Private Sub CommandButton1_Click() Dim Fila As Integer Dim Final As Integer Dim Registro As Integer Dim Titulo As String Titulo = "Gestor de Inventarios" 'Validando los controles sin datos If Me.txt_numerofac = "" Then Me.txt_numerofac.BackColor = &HC0C0FF MsgBox "Debe ingresar una numero de factura", , Titulo Me.txt_numerofac.SetFocus Exit Sub ElseIf Me.txt_descripcion = "" Then Me.txt_descripcion.BackColor = &HC0C0FF MsgBox "Debe ingresar una descripción", , Titulo Me.txt_descripcion.SetFocus Exit Sub ElseIf Me.ComboBox1 = "" Then Me.ComboBox1.BackColor = &HC0C0FF MsgBox "Debe ingresar un centro de costo", , Titulo Me.ComboBox1.SetFocus Exit Sub ElseIf Me.Txt_color = 0 Then Me.Txt_color.BackColor = &HC0C0FF MsgBox "Debe ingresar el Color", , Titulo Me.Txt_color.SetFocus Exit Sub ElseIf Me.txt_serie = 0 Then Me.txt_serie.BackColor = &HC0C0FF MsgBox "Debe ingresar un numero de serie", , Titulo Me.txt_serie.SetFocus Exit Sub ElseIf Me.txt_marca = 0 Then Me.txt_marca.BackColor = &HC0C0FF MsgBox "Debe ingresar un numero de marca", , Titulo Me.txt_marca.SetFocus Exit Sub ElseIf Me.txt_CostoUnitario = 0 Then Me.txt_CostoUnitario.BackColor = &HC0C0FF MsgBox "Debe ingresar un precio", , Titulo Me.txt_CostoUnitario.SetFocus Exit Sub ElseIf Me.txt_PrecioVenta = 0 Then Me.txt_PrecioVenta.BackColor = &HC0C0FF MsgBox "Debe ingresar un precio", , Titulo Me.txt_PrecioVenta.SetFocus Exit Sub End If 'Determina el final del listado de productos For Fila = 1 To 9000 If Hoja2.Cells(Fila, 2) = "" Then Final = Fila Exit For End If Next If MsgBox("Son correctos los datos?" + Chr(13) + "Desea proceder?", vbOKCancel) = vbOK Then 'Envía los datos a la hoja de productos Hoja2.Cells(Final, 2) = Me.txt_numerofac Hoja2.Cells(Final, 3) = Me.txt_descripcion Hoja2.Cells(Final, 4) = Me.ComboBox1 Hoja2.Cells(Final, 5) = Me.Txt_color Hoja2.Cells(Final, 6) = Me.Txtncalendario Hoja2.Cells(Final, 7) = Me.txt_serie Hoja2.Cells(Final, 8) = Me.txt_marca Hoja2.Cells(Final, 9) = Me.txtfecha Hoja2.Cells(Final, 10) = Me.txt_CostoUnitario Hoja2.Cells(Final, 11) = Me.txt_PrecioVenta Hoja2.Cells(Final, 12) = Hoja8.Range("G1") 'Usuario responsalbe de la operación '----- Recuperación de Folio y Messagebox con el mismo Dim folioAnterior As String Dim folioNuevo As String folioAnterior = Hoja2.Cells(Final - 1, 1).Value folioAnterior = Right(folioAnterior, Len(folioAnterior) - 2) folioNuevo = CStr(CInt(folioAnterior) + 1) folioNuevo = "BM" & folioNuevo Hoja2.Cells(Final, 1) = folioNuevo MsgBox Prompt:="Se grabó el folio " & folioNuevo, Title:="Registro grabado" '----- Termina sección de Folio y Messagebox '----------------------------------------------- 'Envía los datos a la hoja de existencias '----------------------------------------------- 'Limpia los controles Me.txt_descripcion = "" Me.Txtncalendario = "" Me.txt_CostoUnitario = "" Me.txt_PrecioVenta = "" Me.Txt_color = "" Me.txt_serie = "" Me.txt_marca = "" Me.txtfecha = "" Me.txt_numerofac = "" Me.ComboBox1 = "" Else Exit Sub End If End Sub
Agregué la sección que comenté como Recuperación de Folio.
Hola de nuevo te mande el archivo a tu correo ya que no funciono para que puedas ver muchísimas gracias estamos en contacto por correo.
- Compartir respuesta