Duplicar datos con condición

Hola Expertos.

Tengo este código en un CommandButton, y me impide duplicar datos desde el TextBox 1(Columna A) y va muy bien, pero lo que yo necesitaría es que me dejase duplicar el dato de la columna A siempre y cuando no se repita el de la columna B, es decir po ejemplo:

TextBox1(Columnn A)=" Manolo" , TextBox2(Columna B)=" Antonio",

si el siguiente apunte es igual, " Manolo" -- " Antonio" pues que no me deje introducirlo, pero si por ejemplo fuese: TextBox1 =" Manolo" y TextBox2=" Pepe" , o TextBox1=" Javi" y TextBox2= " Antonio", pues que si me acepte la entrada, aquí pongo el código que tengo puesto:

Private Sub
CommandButton3_Click()
Dim
strfila$, ctr As control
If TextBox1
= "" Or TextBox2 = "" Or TextBox3 = "" Or
TextBox4 = "" Then
MsgBox "No dejes ningún campo en blanco", vbOKOnly
+ vbInformation, "AVISO"
TextBox1.SetFocus
Exit Sub
End If
Set rango =
Range("A:A").Find(What:=TextBox1, _
LookAt:=xlWhole,
LookIn:=xlValues)
If Not
rango Is Nothing Then
MsgBox "El dato ya existe", vbOKOnly +
vbInformation, "AVISO"
TextBox1.SetFocus
Exit Sub
End If
strfila$ =
[A65536].End(xlUp).Offset(1, 0).Row
Range("A"
& strfila$) = TextBox1
Range("B"
& strfila$) = TextBox2
Range("C"
& strfila$) = TextBox3
Range("D"
& strfila$) = TextBox4
Range("E"
& strfila$) = TextBox5
Range("F"
& strfila$) = TextBox6
Range("G"
& strfila$) = TextBox7
Range("H"
& strfila$) = TextBox8
Range("I"
& strfila$) = TextBox9
Range("J"
& strfila$) = TextBox10
Range("K"
& strfila$) = TextBox11
Range("L"
& strfila$) = TextBox12
Range("M"
& strfila$) = TextBox13
Range("N"
& strfila$) = TextBox14
Range("O"
& strfila$) = TextBox15
Range("P"
& strfila$) = TextBox16
For Each
ctr In Me.Controls
If TypeOf
ctr Is MSForms.TextBox Then
ctr =
""
End If
Next ctr
Range("A"
& strfila$ & ":P" & strfila$).HorizontalAlignment =
xlCenter
TextBox1.SetFocus
End Sub

Espero de la ayuda de los expertos para poder solucionar este problema

Gracias

1 respuesta

Respuesta
1

Te mando mi solución con un ejemplo para que lo adaptes a tus necesidades:

La siguiente macro se ejecuta al pulsar el botón del formulario en el que tengo dos textbox para rellenar con nombres. Dichos nombres serán volcados a la hoja1 en las columnas A y B y en la primera fila libre. Cuando intentemos repetir una combinación de nombres ya existente te dirá que no se puede.

Private Sub CommandButton1_Click()
filalibre = Sheets("hoja1").Range("a65000").End(xlUp).Row + 1
Set busca = Sheets("hoja1").Range("a1:a100").Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ubica = busca.Address
Do
If busca.Offset(0, 1).Value = TextBox2 Then
MsgBox "no se puede"
Exit Sub
End If
Set busca = Sheets("hoja1").Range("a1:a100").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
Cells(filalibre, 1).Value = TextBox1
Cells(filalibre, 2).Value = TextBox2
End Sub

recuerda finalizar y puntuar la consulta

Gracias por tu rapidez luismondelo.

Veras es que para esto de las macros soy casi un negado y después de colocar la macro en su correspondiente CommandButton y probarla pues me dice que no se a definido la variable ( en: busca, filalibre y ubica).

Me podrías por decir donde e de colocar esas variables en la macro y con que sintaxis.

Gracias de nuevo y en espera de tu respuesta.

Un saludo

Utiliza la macro así:

Private Sub CommandButton1_Click()
dim busca as string
dim filalibre as integer
dim ubica as range
filalibre = Sheets("hoja1").Range("a65000").End(xlUp).Row + 1
Set busca = Sheets("hoja1").Range("a1:a100").Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ubica = busca.Address
Do
If busca.Offset(0, 1).Value = TextBox2 Then
MsgBox "no se puede"
Exit Sub
End If
Set busca = Sheets("hoja1").Range("a1:a100").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
Cells(filalibre, 1).Value = TextBox1
Cells(filalibre, 2).Value = TextBox2
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas