Evitar el ingreso de Datos duplicados

Tengo en un archivo excel un formulario para ingresar datos que esta en una primera hoja es para cargar registros de datos que vienen de diferentes lugares y la base se guarda en la siguiente hoja, lo que quiero es que al colocar por ejemplo el dni en el formulario controle si ya no se cargo y si es así que me de error para evitar seguir cargando o modificar si me equivoque en un numero, intente con la función CONTAR. SI en validación de datos, pero parece que el rango de datos no puede estar en otra hoja porque sin tener ningún dato cargado me tira el error de que ya existe el numero si alguien tiene idea para ayudarme le paso lo que estoy intentando hacer desde ya

1 Respuesta

Respuesta
1

El dni lo capturas en un textbox, si es así puedes utilizar el siguiente evento

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Por.Dante Amor
    Set h1 = Sheets("hoja1")
    Set b = h1.Columns("A").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "DNI duplicado"
        Cancel = True
        Exit Sub
    End If
End Sub

Cambia "hoja1" por la hoja en donde quieres revisar

Cambia "A" por la columna en donde tienes tus DNI

Cambia textbox1 por el nombre de tu textbox en el que estás capturando el DNI


Saludos. Dante Amor

Si es lo que necesitas.

Hola Dante no solo es una celda que al cargar yo quería que controle del rango donde se va copiando que esta en otra hoja porque hice una macro donde va copiando cada dato y lo pega en las celdas de la otra hoja decime si puedo usar el textbox en eso lo vería como tengo que hacer

Lo dejamos en la celda.

Pero voy a suponer lo siguiente:

1. La captura la haces en hoja1

2. Capturas el DNI en la celda D5

3. La copia la haces en la hoja2

4. El DNI lo pones en la columna "A"

Pon la siguiente macro en los eventos de tu hoja1, ajusta la macro de acuerdo a tus datos.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "D5" Then
        If Target.Count > 1 Then Exit Sub
        Set h2 = Sheets("hoja2")
        Set b = h2.Columns("A").Find(Target.Value, lookat:=xlWhole)
        If Not b Is Nothing Then
            MsgBox "DNI duplicado"
        End If
    End If
End Sub

Si necesitas ayuda para ajustar la macro, escribe con detalle en dónde tienes cada dato.

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro 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

Saludos. Dante Amor

Desde ya muchísimas gracias y te puntuare excelente estas son mis dos hojas la primera se llama carga y es donde arme el formulario donde dice cuil es que quiero que me controle ni bien cargue y no me deje continuar si el cuil ya existe sino cargo todo y luego presiono el botón guardar y ahí se pasa a la siguiente hoja los datos

No entendí si quieres que te apoye con la actualización a la macro, pero te la anexo con los cambios:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "C8" Then
        If Target.Count > 1 Then Exit Sub
        If Target = "" Then Exit Sub
        Set h2 = Sheets("base de datos")
        Set b = h2.Columns("A").Find(Target.Value, lookat:=xlWhole)
        If Not b Is Nothing Then
            MsgBox "DNI duplicado: " & Target.Value
            Target.Value = ""
            Target.Select
        End If
    End If
End Sub

¡Gracias!  Muchas gracias Dante mañana estudiare como armar porque no se algunas cosas te confirmo si todo funciona bien

Buen dia Dante disculpa la molestia pero no me ubico donde tengo que copiar lo que me diste, lo intente copie pero se ve que mal porque al ingresar el valor mi cuil por ejemplo que ya estaba me dejo ingresarlo sin problemas se ve que algo estoy haciendo mal te envió imagen para que me guíes y nuevamente disculpa la molestia

esto es lo que veo al apretar Alt + F11, y te explico yo quiero que al ingresar el valor en la celda C8 y presionar ENTER para pasar a la siguiente ya me salte el error si el cuil ya existiera cargado, si no es asi continuar darle a guardar para q se copie al la hoja base de datos, paso a comentarte para que es yo trabajo en una escuela y hay en mi ciudad varios institutos de formacion docente que tenian su propia junta de clasificacion ahora se va a unificar y se tiene que armar 1 sola y se va a recibir los legajos de todas las que habian y van haber legajos de docentes en duplicados, despues tengo que armar otro formulario para que me muestre buscando con el nombre o cuil que numero de legajo tiene el docente, desde ya muchas gracias y perdon nuevamente por la molestia, y te comento me fascina el excel pero cuesta encontrar bibliografia practica y avanzada que me recomendarias porque la parte de programacion es la que estoy muy flojo Jorge

Sigue estos paso para copiar la macro

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro 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(Carga)
  4. Del lado derecho copia la macro

Nuevamente gracias Dante lo pude hacer y funciona, ahora estoy peleando con la consulta para que al colocar cualquiera de los datos me tire la misma planilla de carga con los datos, estoy peleando con la función buscarv en una hoja y la base esta en otra pero me tira error así que voy a ver como lo resuelvo, saludos Jorge Hector Araujo desde Formosa - Capital República Argentina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas