Macro que suministre Mensaje de alerta al detectar un valoren especifico

Gusto en saludarles.

Una vez más acudo a ustedes para solicitar su valiosa ayuda.

Realicé una macro pero me arroja un error el cual indica "No coinciden los tipos".

La macro debe dar un alerta cuando detecte que dentro de un rango se encuentre el valor que se encuentra en la hoja 2 celda A1. Es decir, en la hoja2 celda A1 tengo el número 12345. En la hoja 1, rango F13:F23 se encuentran los números de cheques emitidos en el día. Al colocar el número 12345 se debe desplegar el mensaje con el alerta

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Mensaje al usuario al llegar al Stock mínimo de Cheques autorizados para pago en el Banco
If Sheets("Hoja1").Range("F13:F23").Value = Sheets("Hoja2").Range("A1") Then
MsgBox "El último cheque autorizado en el Banco para pago es el Nro. 12350 " & Chr(13) & Chr(13) & "xxxxxxxxxxxx. ", vbCritical, "xxxxxx - xxxxxx"
End If
End Sub

1 respuesta

Respuesta
1

Si el control debe realizarse al ingresar un valor en A1, el evento será Change y no SelectionChange.

Si la celda se alimenta de otro modo (por envío de datos o resultado de fórmula) entonces está bien que sea el evento Selection... el resto del código será el mismo:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'solo controla lo ingresado en [A1] o al seleccionar A1
If Target.Address <> "$A$1" Then Exit Sub
'busca el nro en Hoja1, F13:F23
Set busco = Sheets("Hoja1").Range("F13:F23").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra envia el mensaje
If Not busco Is Nothing Then
    MsgBox "El ultimo......"
End If
End Sub

El código se coloca en el objeto HOJA2

Si esta respuesta resuelve tu consulta no olvides valorarla (excelente o buena) sino comenta y aclara y la seguimos tratando.

Muy buenos días Elsa.

Como siempre  tan gentil en brindarme tu apoyo.

El control debe realizarse al ingresar valores en la hoja1 rango F13:F23 y estos números deben compararse siempre con el valor que esta ingresado en la celda A1 de la hoja 2 (este valor se coloca manualmente y se modificara de forma manual solo cuando se supera esa cifra y se haya realizado la notificación al banco).

Estaré atenta a tus comentarios y sugerencias.

Saludos y muchas gracias.

Bien, en ese caso así sería la macro. Te queda ajustar el mensaje.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'dato a buscar
Set datoBusq = Sheets("Hoja2").[A1]
'solo controla lo ingresado en [F13:F23]
If Intersect(Target, [F13:F23]) Is Nothing Then Exit Sub
'se se borra la celda no realiza la búsqueda
If Target = "" Then Exit Sub
'busca el nro en el rango establecido
Set busco = datoBusq.Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra envia el mensaje
If Not busco Is Nothing Then
    MsgBox "El ultimo......"
   'otras acciones  ------ agregar
End If
End Sub

Sdos!

Muchísimas ¡Gracias! Elsa.

En absolutamente todas mis consultas, has dado con la solución perfecta.

Saludos y feliz domingo. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas