¿Cómo evitar que se capturen dos veces un dato?

Quiero que me señale si se llega a capturar los mismos 7 números que están en rojo en la imagen

1 Respuesta

Respuesta
1

En el pedimento, ¿siempre hay 4 números y un espacio antes?, ¿Siempre son 7 números?

Cómo quieres que te señale, ¿qué no te permita grabar el número o simplemente que te mande un aviso?, ¿Se deben comparar contra los 7 números de la misma columna B? ¿En tu ejemplo de la imagen el número 2023329 contra que lo comparaste para saber que son los mismos 7 números?

siempre serán los números 3968 o 3742 aveces son otros pero si van esos 4 números y luego 7 números, siempre 7 numero. Me gustaría que me mande un aviso de que ya están capturados en la misma columna pero ahora también estoy usando otras columnas entonces si se puede comparar con esas seria perfecto, si no pues puedo cambiarlas a la columna b.

en el ejemplo no lo comprare con nada, solo te lo puse de ejemplo para que supieras que es lo que quiero señalar.

es que si tengo duda de que las facturas ya están hechas voy a mi base de dato, que es la del ejemplo, y busco esos 7 números, pero hay veces que me traen facturas ya hechas y solo tengo que capturarlas a mi base de datos y pues son demasiadas como para ponerme a buscar las 30 que me trajeron.

Instrucciones
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
4. Del lado derecho copia la macro, en el panel
5. Verifica que en el cuadro de arriba diga “Worksheet” y “Change”, puedes verificarlo en la imagen que te envío.
http://www.subeimagenes.com/img/verificafactura-418696.html
Funcionamiento:
Cada vez que captures una factura en la columna B, se verifica si existe en toda la columna B, excepto la nueva que acabas de capturar. Si existe la factura te mando un aviso y te regresa a la celda de captura.
Para agregar nuevas columnas, tienes que actualizar estas líneas de la macro:
Set c = Range("F:F") ' por ejemplo si quieres agregar la columna F
Union(a, b, c).Select ' Tienes que agregar c en esta instrucción
Si quieres agregar otra columna, por ejemplo la columna M, realizas lo siguiente
Set d = Range("M:M") 'Recuerda nombrar el Set con otra letra, ej. d
Union(a, b, c, d).Select 'Agregas ahora d

'*****Macro*****
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.daM
ufila = ActiveCell.SpecialCells(xlLastCell).Row
If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
    If Target.Value <> "" Then
        valfactura = Right(Target.Value, 7)
        celda = Target.Address
        celda = Mid(celda, 4, 7)
        Set a = Range(Cells(1, 2), Cells(celda - 1, 2))
        Set b = Range(Cells(celda + 1, 2), Cells(ufila, 2))
        Set c = Range("F:F")
        Union(a, b).Select
        'Application. Union(Range(Cells(1, 2), Cells(celda - 1, 2)), Range(Cells(celda + 1, 2), Cells(ufila, 2))).Select
        Set RangoObj = Selection.Find(What:=valfactura, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False)
        If Not RangoObj Is Nothing Then
            'La factura si existe
            MsgBox ("La factura ya existe en la celda " & RangoObj.Address)
            Target.Select
            Exit Sub
        Else
            'Si la celda es borrada, simplemente regresa a target
            Target.Select
        End If
    End If
End If
End Sub
'*****Macro*****

Saludos.dam
No olvides cerrar la pregunta

Copia la siguiente macro. La anterior tenía un pequeño detalle pero ya lo corregí.

'*****Macro*****
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.daM
ufila = ActiveCell.SpecialCells(xlLastCell).Row
If Not Intersect(Target, Range("B:B")) Is Nothing Then
    If Target.Value <> "" Then
        valfactura = Right(Target.Value, 7)
        celda = Target.Address
        celda = Mid(celda, 4, 7)
        Set a = Range(Cells(1, 2), Cells(celda - 1, 2))
        Set b = Range(Cells(celda + 1, 2), Cells(ufila, 2))
        Set c = Range("F:F")
        Union(a, b, c).Select
        'Application. Union(Range(Cells(1, 2), Cells(celda - 1, 2)), Range(Cells(celda + 1, 2), Cells(ufila, 2))).Select
        Set RangoObj = Selection.Find(What:=valfactura, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False)
        If Not RangoObj Is Nothing Then
            'La factura si existe
            MsgBox ("La factura ya existe en la celda " & RangoObj.Address)
            Target.Select
            Exit Sub
        Else
            'Si la celda es borrada, simplemente regresa a target
            Target.Select
        End If
    End If
End If
End Sub
'*****Macro*****

Saludos.dam
No olvides cerrar la pregunta

Muchas gracias, veré como funciona. en mi computadora no pude habilitar las macros pero en la de enseguida si.

en mi computadora abrí el archivo ya con macros que le puse a los archivos y me sale

Content Disabled

Excel started does not support running macros and other active content.

Purchase

Malas noticias, encontré esto:

Q: Files have macros, but they cannot be run in Excel Starter or Word Starter, ¿why?
A: Office Starter does not support the creation, editing, or running of macros. However, if a document with a macro is opened in Starter, the macro remains as part of the file.

No vas a poder ejecutar la macro en tu máquina.

Saludos. Dam :(

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas