Modificar Macro para ingreso con datos repetidos
Tengo dos inconvenientes, el primero es que necesito ajustar la siguiente Macro, para poder ingresar datos repetidos, debido a que esta Macro, solo permite el ingreso de registros únicos.
El motivo es que necesito registrar Ordenes de compra, y necesito ingresar cada producto de forma individual, por lo que necesitare ingresar el codigo de la Orden de compra, por cada producto.
Lo segundo es que esta Macro debería traspasar cada nuevo ingreso a una fila diferente, sin embargo siempre sobrescribe la información en la misma fila.
Function insertarRegistro(OrdendeCompra As String, Fecha As String, N°deTransporte As String, Proveedor As String, GuiadeDespacho As String, Factura As String, Cantidad As String, Producto As String, Comentario As String, CentrodeCosto As String) As String Dim ultFila, filaRegistro, existe As Long Dim confirmacionRegistro As String confirmacionRegistro = "NO" ultFila = Range("B" & Rows.Count).End(xlUp).Row If ultFila < 8 Then filaRegistro = 8 Else filaRegistro = ultFila + 1 End If If ultFila < 8 Then ultFila = 8 End If existe = filaExisteRegistro(OrdendeCompra, "B8:B" & ultFila) If existe > 0 Then MsgBox "Ya existe un registro asociado a esta Orden de Compra" insertarRegistro = confirmacionRegistro Exit Function End If Entradas.Cells(filaRegistro, 2) = OrdendeCompra Entradas.Cells(filaRegistro, 3) = Fecha Entradas.Cells(filaRegistro, 4) = N°deTransporte Entradas.Cells(filaRegistro, 5) = Proveedor Entradas.Cells(filaRegistro, 6) = GuiadeDespacho Entradas.Cells(filaRegistro, 7) = Factura Entradas.Cells(filaRegistro, 8) = Cantidad Entradas.Cells(filaRegistro, 9) = Producto Entradas.Cells(filaRegistro, 10) = Comentario Entradas.Cells(filaRegistro, 11) = CentrodeCosto MsgBox "Ingreso registrado exitosamente" confirmacionRegistro = "Ingresado" insertarRegistro = confirmacionRegistro End Function Private Function filaExisteRegistro(noIdentificacion As String, rangoConsulta As String) As Long Dim numeroFila As Long numeroFila = 0 With Entradas.Range(rangoConsulta) Set c = .Find(noIdentificacion, LookIn:=xlValues) If Not c Is Nothing Then numeroFila = c.Row End If End With filaExisteRegistro = numeroFila End Function Sub verFormularioIngresoDatos() Formingreso.Show End Sub
Y este es el codigo del Userform
Private Sub cmdguardar_Click() Dim confirmacionRegistro As String If Len(txtOrdendeCompra) = 0 Or Len(txtFecha) = 0 Or Len(txtN°deTransporte) = 0 Or Len(txtProveedor) = 0 Or Len(TxtGuiadeDespacho) = 0 Or Len(txtFactura) = 0 Or Len(txtCantidad) = 0 Or Len(txtProducto) = 0 Or Len(txtComentarios) = 0 Or Len(lstCentrodeCosto) = 0 Then MsgBox " Favor completar todos los campos" Exit Sub End If confirmacionRegistro = Módulo1. InsertarRegistro(txtOrdendeCompra, txtFecha, txtN°deTransporte, txtProveedor, TxtGuiadeDespacho, txtFactura, txtCantidad, txtProducto, txtComentarios, lstCentrodeCosto) If confirmacionRegistro <> "NO" Then txtOrdendeCompra = "" txtFecha = "" txtN°deTransporte = "" txtProveedor = "" TxtGuiadeDespacho = "" txtFactura = "" txtCantidad = "" txtProducto = "" txtComentarios = "" lstCentrodeCosto = "" End If End Sub
Respuesta de Adriel Ortiz Mangia
1