Impedir registros repetidos considerando 2 columnas
En una Hoja Excel, a modo de base de datos, utilizo un UserForm para ingresar estos datos. Nos centraremos en las columnas"A" y "B" que es donde me surgen los problemas. En la Columna "A" van números de registro y en la "B", la fecha en la que se registran. Todos estos registros se corresponden con fechas del pasado 2013. Hasta ahora, para impedir que se introdujeran números de registro duplicados, a través de unas líneas de código, recorrían la columna "A" y si se encontraba ya registrado, con un MsgBox te advertía que ese núm. Ya se encontraba y te impedía su registro (al final pondré este código).
El problema que me surge es con los nuevos registros, correspondientes al 2014, en los que se pueden repetir con los del 2013, y no por ello deben de dejar de grabarse; es decir, se tienen que grabar. Lo que pretendo es modificar la macro, para que realice lo siguiente:
1. - Que compruebe si el nuevo número de registro se encuentra o no en la Columna "A".
2. - Si ya se encuentra grabado, comprobar en la Columna "B", si está grabado con fecha de 2013 y no con fecha de 2014. Si ya se encuentra grabado con fecha de 2013, la macro debe permitir el registro de todos los datos. Dicho de otra forma, debe comprobar que el nuevo número de registro, no se encuentre repetido con fecha de 2014; en cuyo caso, debe advertir de su duplicidad y no grabarse.
Private Sub cmdRegistra_Click()
Dim Salir As Boolean, EstaHoja As String
Application. ScreenUpdating = False
For n = 1 To 2: If Me. Controls("textbox" & n) = "" Then Salir = True: GoTo Verifica
Next
For n = 1 To 4: If Me. Controls("combobox" & n) = "" Then Salir = True: GoTo Verifica
Next
If IsNull(DTPregistro) Then Salir = True
If IsNull(DTPentrega) Then Salir = True
Verifica:
If Salir Then MsgBox "FALTAN DATOS! ": Exit Sub
Sheets("DATOS"). Select
' Comprueba si hay duplicados en la columna 1 antes de copiar datos ,
valor = TextBox1. Value
contarsi = Application.WorksheetFunction.CountIf(Sheets("DATOS"). Columns(1), valor)
If contarsi > 0 Then
MsgBox "... Ya existe un Informe con ese número de registro, no se permiten duplicados"
TextBox1. Value = ""
Exit Sub
End If
' Fin de la comprobación de duplicados
t = Cells(Rows. Count, 1). End(xlUp). Row
Cells(t + 1, 1) = TextBox1. Value
Cells(t + 1, 2) = DTPregistro. Value
Cells(t + 1, 3) = ComboBox1. Value
Cells(t + 1, 4) = ComboBox2 & " " & TextBox3
Cells(t + 1, 5) = TextBox2. Text
Cells(t + 1, 6) = ComboBox3. Value
Cells(t + 1, 7) = ComboBox4. Value
Cells(t + 1, 8) = DTPentrega. Value
Cells(t + 1, 13) = TextBox4. Text
TextBox1. Value = ""
DTPregistro. Value = ""
TextBox2. Text = ""
TextBox3. Text = ""
ComboBox1. Value = ""
ComboBox2. Value = ""
ComboBox3. Value = ""
ComboBox4. Value = ""
DTPentrega. Value = ""
TextBox4. Text = ""
Application. ScreenUpdating = True
End Sub