Buscar valor de una celda en un rango

Tengo una macro que almacena una información de promociones, es decir, tengo un formulario creado en una hoja de excel del que luego se obtiene una información que se almacena en una tabla en otra hoja, se supone que el valor que da nombre a cada una de las filas es único, pero no autogenerado, por lo que necesito una macro que busque en mi columna el valor de una casilla de la hoja del formulario antes de lanzar la macro y que, si este valor existe, me lance un mensaje de error para advertir al usuario de que ese registro ya se ha creado; en otro caso lanzará la macro que ya tengo generada que almacena esta información.

1 Respuesta

Respuesta
2
Puedes agregar esta sentencia
Adecuala a lo que necesitas
Private Sub textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim n As Range
If textbox1.Text <> "" Then
   Set n = Worksheets("hoja1").Range("a2:a55555").Find(what:=textbox1.Text, lookat:=xlWhole)
    If Not (n Is Nothing) Then
        Range(n.Address).Select
        MsgBox "El registro:  " & UCase(textbox1.Text) & " ya se encuentra registrado"
        textbox1.Text = ""
        Cancel = True
     End If
     Set n = Nothing
End If
End Sub
He tenido que cambiarlo un poco porque el valor no venía de un textbox si no de una celda, pero bueno, además he añadido el código que ya tenía yo para almacenar la información dejo el código modificado por si alguien lo busca en el futuro.
Decir que yo estaba trabajando con 2 hojas (FORMULARIO y LISTADO_PROMOCIONES), por eso he tenido que meter el Sheets(). Select al principio
Sub Almacenar_promo()
Dim n As Range
    Sheets("FORMULARIO").Select
If Range("C4").Value <> "" Then
   Set n = Worksheets("LISTADO_PROMOCIONES").Range("a2:a55555").Find(what:=Range("C4").Value, lookat:=xlWhole)
    If Not (n Is Nothing) Then
        Range(n.Address).Select
        MsgBox "La promoción con Id_promo  " & Range("C4").Value & " ya se ha creado, para cambiarla o eliminarla acceda directamente a la hoja: Listado_promociones"
'        textbox1.Text = ""
        Cancel = True
    Else
'<span style="white-space: pre;"> </span>Aquí está el código que yo utilicé para almacenar pero como es muy largo y no creo que tenga gran valor por ser muy simple, no lo pongo
End If
End Sub
Muchas gracias por la rapidez y el esfuerzo, es un gusto preguntar aquí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas