En este grupo En todos

Foro de Excel

Condicion para que no acepte datos Repetidos en hoja de base de datos

David Jose
Bachieller en ccs acacentro - la calif...
Escrito por David Jose Garcia Alvarez
el 11/04/2011

Buen dia

Estimados señores

Como siempre un honor estar aqui.

Tengo una nueva interrogante a la cual trate de solucionar en varias oportunidades, mas no logre solucionarlo. Es por eso que busco su ayuda para solucionarlo.
Tengo un formulario, el cual me registra los datos que le coloco, en este caso deseo crear una base de datos de codigos, descripcion, presentacion y cantidad minima pero,.... Mi problema es registrar datos que ya existen. La intencion es que no acepte datos repetidos, en especial los codigos repetidos de la clumna A:A de la hoja2
El codigo que tengo es el sieguiente:

Option Explicit
Private Sub CommandButton1_Click()
Dim Base As String

If TextBox1 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 1", vbCritical, "Error"
TextBox1. SetFocus

ElseIf TextBox2 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 2", vbCritical, "Error"
TextBox2. SetFocus

ElseIf TextBox3 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 3", vbCritical, "Error"
TextBox3. SetFocus

Else

Base = Sheets("hoja2"). Range("A65536"). End(xlUp). Row + 1

Sheets("hoja2"). Cells(Base, 1) = UCase(TextBox1)
Sheets("hoja2"). Cells(Base, 2) = UCase(TextBox2)
Sheets("hoja2"). Cells(Base, 3) = UCase(TextBox3)
MsgBox "Datos Cargados con Exito", vbInformation, "Sistema"
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1. SetFocus

End If


End Sub

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 11/04/2011

Hola! David. Una opción podría ser:
__________________

Private Sub CommandButton1_Click()
TextBox1. SetFocus

If TextBox1 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 1", vbCritical, "Error"
ElseIf TextBox2 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 2", vbCritical, "Error"
TextBox2. SetFocus
ElseIf TextBox3 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 3", vbCritical, "Error"
TextBox3. SetFocus
Else
With Sheets("Hoja2")
If WorksheetFunction. CountIf(. [A:A], TextBox1) > 0 Then
MsgBox "Casilla 1 repetida", vbCritical, "Error"
Exit Sub
End If
. Range("A65536"). End(xlUp). Offset(1). Resize(, 3) = Array(UCase(TextBox1), UCase(TextBox2), UCase(TextBox3))
End With
MsgBox "Datos Cargados con Exito", vbInformation, "Sistema"
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
End If

End Sub
__________________

Saludos, Cacho.

David Jose Garcia Alvarez
Bachieller en ccs acacentro - la calif...
Escrito por David Jose Garcia Alvarez
el 11/04/2011

Señor Cacho

Mil gracias por la soluccion a mi solicitud. Ya lo inclui y funcioana a la perfeccion.
Mil gracias de verdad, me tome la libertad de incluir otra caja de texto para que registre tambien el costo unitario de los productos a registrar.

De verdad muy complacido por su paciencia a ayudarnos a solucionar nuestras inquietudes.

Mis humildes agradecimientos y mis respetos por su gran labor.

Saludos cordiales.

Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 22/09/2012

Otra opción:


Haz doble clic en el TextBox1 y en el evento Exit poné el siguiente código:

If Application. IsError(Application. Match(TextBox1. Value, Range("Hoja2! A:a"), 0)) = False Then

MsgBox "Ya Existe", 16, "Error"
TextBox1. Value = ""
End If


Esto te permitirá saber si tu entrada está duplicada tempranamente, al deseleccionar el TextBox1

Poniendo en el lugar correspondiente tu código quedaría así:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms. ReturnBoolean)
If Application. IsError(Application. Match(TextBox1. Value, Range("Hoja2! A:a"), 0)) = False Then
MsgBox "Ya Existe", 16, "Error"
TextBox1. Value = ""
End If
End Sub


Atte. Willan

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 05/10/2012

Cerramos este intercambio que ya tiene "añito y medio".