MsgBox automático al ingresar valor no permitido

Espero que me puedan ayudar con lo siguiente.

Necesito una macro que despliegue un msgbox cuando el valor en A1 que sea diferente a el valor de B1, y al presionar el botón aceptar borre el contenido de la celda C1

He hecho algunas macros con la grabadora de macros, las que ejecuto con un botón, pero no sé como hacer para esta macro sea automática, quiero decir que el msgbox sea automático al ingresar el datos en la celda.
Hasta el momento tengo lo siguiente, pero no sé como hacer que reaccione a la validación de valores de A1 y B1 y tampoco que sea automática. Se que van unos "if" antes, parecido a una formula SI, pero he visto en otras web que ingresan otros códigos al principio, y ahi no sé como proseguir.

MsgBox "Ha ingresado un valor no permitido para este campo", vbOkonly + vbExclamation, "Valor no permitido"

Range("C1").ClearContents

End Sub. 

Espero que me puedan ayudar, soy nuevo en estos temas.

1 respuesta

Respuesta
1

.25/08/16

Buenos días, Jonathan

Bastante cerca.

Si quieres que se ejecute automáticamente, haz click con el botón derecho del mouse sobre la pestaña de la hoja donde quieres que ocurra lo que solicitas. Elije la opción "Ver Código" y pega lo siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "A1" Or Target.Address(False, False) = "B1" Then
If Range("A1") <> Range("B1") Then
    MsgBox "Ha ingresado un valor no permitido para este campo", vbOKOnly + vbExclamation, "Valor no permitido"
    Range("C1").ClearContents
End If
End If
End Sub

Ahora, cada vez que cambien las celdas A1 o B1 y no sean iguales, aparecerá tu mensaje y el contenido  la celda C1 será borrado.

Espero que sea lo que buscas.

Un abrazo

Fernando

Muchas gracias!!   fue de gran ayuda. 

Haciendo unos ajustes e intentando descifrarla, la dejé así y me sirvió. 

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("a1").Value <> Range("b1").Value Then
MsgBox "Ha ingresado un valor no permitido para este campo", vbOKOnly + vbExclamation, "Valor no permitido"
Range("C1").ClearContents
End If
End Sub

MUCHAS GRACIAS!

.

Muy bien, Jonathan

Me alegro de que te haya servido.

El condicional para evaluar si las celdas A1 y B1 son las que cambian, con la instrucción:

If Target.Address(False, False) = "A1" Or Target.Address(False, False) = "B1" Then

Es para evitar que la macro esté funcionando cuando cambian celdas que no tiene nada que ver con ellas.

Pero lo importante es que te funcione correctamente.

Un abrazo

Fernando

.

Si, Algo así supuse, lo que sucede es saque esa Condicional porque me detectaba que las celdas no cambiaban, ya que las Celdas contieneN fórmulas, entonces cambia solo el Valor de la celda, entonces pensé que la condicional "creía" que la celda no cambiaba ya que la foRmula No cambia, Cambia solo el valor. 

Se puede agrEgar algo a la condicional para que Detecte los valores de la celda ?

.

Sí, me imaginé que podría estar pasando eso.

A menos que evalúes las celdas que alimentan a esas dos, no tendrás más remedio que dejarlo sin esas condiciones.

Pero si funciona, no me haría mayor problema.

Abrazo

Fernando

Buenísimo, entonces lo dejaré así,  muchas gracias por el tiempo !!

.

Un placer ayudar!

Abrazo

Fernando

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas