Validar fila duplicada en excel vba

Tengo un formulario para registrar productos con varios campos, entre ellos el Código, Producto, Detalle, Precio, IVA, MArca, etc.

Cómo puedo validar que al ingresar un producto valide si todos las celdas de la fila están repetidas en otra fila de la hoja Productos y así poder restringir el ingreso del producto si está repetido.?

2 respuestas

Respuesta
2

Te anexo un ejemplo con 4 textbox, deberás cambiar los nombres de los textbox y las columnas donde va cada textbo, así como agregar todas las celdas y los controles que quieras revisar.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    'valida si el registro ya existe
    existe = False
    Set h = Sheets("Productos")
    Set r = h.Columns("A")  'columna del código
    '
    If IsNumeric(TextBox1.Value) Then dato1 = Val(TextBox1.Value) Else dato1 = TextBox1.Value   'cod
    If IsNumeric(TextBox2.Value) Then dato2 = Val(TextBox2.Value) Else dato2 = TextBox2.Value   'prod
    If IsNumeric(TextBox3.Value) Then dato3 = Val(TextBox3.Value) Else dato3 = TextBox3.Value   'deta
    If IsNumeric(TextBox4.Value) Then dato4 = Val(TextBox4.Value) Else dato4 = TextBox4.Value   'precio
    '
    Set b = r.Find(TextBox1.Value, LookAt:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            If h.Cells(b.Row, "A").Value = dato1 And _
               h.Cells(b.Row, "B").Value = dato2 And _
               h.Cells(b.Row, "C").Value = dato3 And _
               h.Cells(b.Row, "D").Value = dato4 Then
                existe = True
                Exit Do
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    If existe Then
        MsgBox "El producto ya existe"
        Exit Sub
    End If
    '
    'aquí continúa tu código para agregar el producto
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias! Gracias Dante, funciona perfecto para impedir que guarden nuevos registros, estoy adaptándolo para también sirva si se modifica algún registro ya existente no tome datos de otro existente también

Perdona, el problema lo tengo con el campo precio, en la hoja excel lo tengo tipo moneda con dos decimales, pero cuando lo compara con el cuadro de texto los encuentra diferentes y permite la modificación. Cómo podría formatear el dato4, es decir el precio para que sea igual al de la hoja excel. Gracias

Tienes el formato en la celda de 2 decimales, pero tal vez tengas más decimales. Prueba con un precio si decimales

Sin decimales funciona bien, el problemas es con los decimales

¿Qué tienes en la celda?, pon el cursor en la celda y revisa en la barra de fórmulas exactamente qué tienes.

En la celda puedes tener esto: $2,125.34

Pero en la barra de fórmulas tienes esto: 2125.338

Entonces quiero que me digas, qué tienes en la barra de fórmulas

¿Qué tienes exactamente en el textbox?

O envíame 2 imágenes una de la hoja y otra del formulario

Perdón, otra cosa, es que el código lo pongo autompaticamente, por lo que no se va a repetir, entonces el código no interpreta o encuentra vacío esta parte : 

Set b = r.Find(TextBox1.Value, LookAt:=xlWhole)

Pues aún no se ha generado el consecutivo

Tengo esto en la barra de fórmulas

555,55

y en la celda

$555,55

1. Lo de "es que el código lo pongo autompaticamente", no lo entiendo, si quieres lo veo en otra pregunta.

2. Te faltó poner cómo lo tienes en el textbox.

O envíame 2 imágenes: una de la hoja y otra del formulario

¡Gracias! Te remití un correo con el archivo.

Solamente pon la imagen de tu formulario para ver que tienes en el textbox

Respuesta
1

Fíjate si te aporta algo más los siguientes ejemplos

https://youtu.be/-ikuUoKlgcI

https://youtu.be/4XSrz4P0w9A

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas