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