Guardar datos de formulario vba excel repetidas veces según se necesite

Tengo un sistema de inventarios en el cual mediante un formulario en vba excel, doy de alta a los bienes que ingresan. Actualmente todo esta trabajando bien pero me e visto con un detalle cuando quiero registrar por decir 20 bienes iguales tengo que registrar uno por uno. Como puedo hacer para que en algún textbox al ponerle un numero en este caso del ejemplo 20 al darle guardar me cree 20 registros iguales en mi hoja de inventarios. Espero me aya explicado. Y de igual manera que me respete el consecutivo.

1 Respuesta

Respuesta
1

Con un textbox le dice la cantidad

If TextBox = Empty Then
TextBox = "1"
End If

for x = 1 to textbox

tu macro de copiar

next X

Si no puedes pega la macro para adatarle la intrucion

Si te silve no olvide valorar para cerrar la pregunta

con este código envió los datos del formulario a la hoja. en esta parte se pega el código que me proporcionas o como quedaría?.

 '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, 1) = Me.Label13.Caption
                Hoja2.Cells(Final, 2) = Me.txt_numerofac
                Hoja2.Cells(Final, 3) = Me.txt_descripcion
                Hoja2.Cells(Final, 4) = Me.cbo_insti
                Hoja2.Cells(Final, 5) = Me.cbo_subd
                Hoja2.Cells(Final, 6) = Me.cbo_centroc
                Hoja2.Cells(Final, 7) = Me.TextBox1
                Hoja2.Cells(Final, 8) = Me.Txt_color
                Hoja2.Cells(Final, 9) = Me.txtfecha
                Hoja2.Cells(Final, 10) = Me.txt_serie
                Hoja2.Cells(Final, 11) = Me.txt_marca
                Hoja2.Cells(Final, 12) = Me.Txtncalendario
                Hoja2.Cells(Final, 13) = Me.txt_CostoUnitario
                Hoja2.Cells(Final, 14) = Me.txt_PrecioVenta
                Hoja2.Cells(Final, 15) = Hoja8.Range("G1")
                'Envía los datos a la hoja de etiquetas
                Hoja3.Cells(Final, 1) = Me.Label13.Caption
                Hoja3.Cells(Final, 2) = Me.txt_numerofac
                Hoja3.Cells(Final, 3) = Me.txt_descripcion
                Hoja3.Cells(Final, 4) = Me.cbo_insti
                Hoja3.Cells(Final, 5) = Me.cbo_subd
                Hoja3.Cells(Final, 6) = Me.cbo_centroc
                Hoja3.Cells(Final, 7) = Me.TextBox1
                Hoja3.Cells(Final, 8) = Me.Txt_color
                Hoja3.Cells(Final, 9) = Me.txtfecha
                Hoja3.Cells(Final, 10) = Me.txt_serie
                Hoja3.Cells(Final, 11) = Me.txt_marca
                Hoja3.Cells(Final, 12) = Me.Txtncalendario
                Hoja3.Cells(Final, 13) = Me.txt_CostoUnitario
                Hoja3.Cells(Final, 14) = Me.txt_PrecioVenta
                Hoja3.Cells(Final, 15) = Hoja8.Range("G1")
                MsgBox Prompt:="Se grabó el registro con el folio " & Me.Label13.Caption, Title:="RegistroGuardado"
                '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.cbo_insti = ""
                Me.cbo_subd = ""
                Me.cbo_centroc = ""
                Me.TextBox1 = ""
                Call determinaFolioNuevo
                Me.Label13.Caption = folioNuevo
            Else
                Exit Sub
    End If
End Sub

Textbox POR seria tu textbox digas ejemplo Textbox1

If TextBox  X = Empty Then
TextBox X = "1"
End If

for x = 1 to textbox X

 Hoja2.Cells(Final, 1) = Me.Label13.Caption
                Hoja2.Cells(Final, 2) = Me.txt_numerofac
                Hoja2.Cells(Final, 3) = Me.txt_descripcion

......

Hoja3.Cells(Final, 12) = Me.Txtncalendario
                Hoja3.Cells(Final, 13) = Me.txt_CostoUnitario
                Hoja3.Cells(Final, 14) = Me.txt_PrecioVenta
                Hoja3.Cells(Final, 15) = Hoja8.Range("G1")

next X

 MsgBox Prompt:="Se grabó el registro con el folio " & Me.Label13.Caption, Title:="RegistroGuardado"
                'Limpia los controles
                Me.txt_descripcion = ""
                Me.Txtncalendario = ""

asi debe quedar recuerad deberar agregar un textbox  X para sea el indicador de la cantidad

Recuardad valorar para cerrar la pregunta

No me funciona que estaré haciendo mal

te dejo todo el codigo del boton guardar para ver si lo puedes agregar 

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.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
    If TextBox  X = Empty Then
TextBox X = "1"
End If
for x = 1 to textbox X
                Hoja2.Cells(Final, 1) = Me.Label13.Caption
                Hoja2.Cells(Final, 2) = Me.txt_numerofac
                Hoja2.Cells(Final, 3) = Me.txt_descripcion
                Hoja2.Cells(Final, 4) = Me.cbo_insti
                Hoja2.Cells(Final, 5) = Me.cbo_subd
                Hoja2.Cells(Final, 6) = Me.cbo_centroc
                Hoja2.Cells(Final, 7) = Me.TextBox1
                Hoja2.Cells(Final, 8) = Me.Txt_color
                Hoja2.Cells(Final, 9) = Me.txtfecha
                Hoja2.Cells(Final, 10) = Me.txt_serie
                Hoja2.Cells(Final, 11) = Me.txt_marca
                Hoja2.Cells(Final, 12) = Me.Txtncalendario
                Hoja2.Cells(Final, 13) = Me.txt_CostoUnitario
                Hoja2.Cells(Final, 14) = Me.txt_PrecioVenta
                Hoja2.Cells(Final, 15) = Hoja8.Range("G1")
                'Envía los datos a la hoja de etiquetas
                Hoja3.Cells(Final, 1) = Me.Label13.Caption
                Hoja3.Cells(Final, 2) = Me.txt_numerofac
                Hoja3.Cells(Final, 3) = Me.txt_descripcion
                Hoja3.Cells(Final, 4) = Me.cbo_insti
                Hoja3.Cells(Final, 5) = Me.cbo_subd
                Hoja3.Cells(Final, 6) = Me.cbo_centroc
                Hoja3.Cells(Final, 7) = Me.TextBox1
                Hoja3.Cells(Final, 8) = Me.Txt_color
                Hoja3.Cells(Final, 9) = Me.txtfecha
                Hoja3.Cells(Final, 10) = Me.txt_serie
                Hoja3.Cells(Final, 11) = Me.txt_marca
                Hoja3.Cells(Final, 12) = Me.Txtncalendario
                Hoja3.Cells(Final, 13) = Me.txt_CostoUnitario
                Hoja3.Cells(Final, 14) = Me.txt_PrecioVenta
                Hoja3.Cells(Final, 15) = Hoja8.Range("G1")
                MsgBox Prompt:="Se grabó el registro con el folio " & Me.Label13.Caption, Title:="RegistroGuardado"
                '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.cbo_insti = ""
                Me.cbo_subd = ""
                Me.cbo_centroc = ""
                Me.TextBox1 = ""
                Call determinaFolioNuevo
                Me.Label13.Caption = folioNuevo
            Else
                Exit Sub
    End If
End Sub

Textbox X tiene que cambiarlo por el textbox nuevo que agregegaste al formulario o al menos que le pongas nombre Cómo los demás textbox

Textbox1 por decir que sea ese o

Textbox2 no cual seria en tu caso

Y después de

Me. Label13.Caption ...

Tiene pones estos

Next  X 

Si no puedes este es mi correo [email protected] envíame el archivo y lo reviso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas