Mensaje de advertencia en Excel debido al valor de una celda

Quiero saber cómo ejecutar una macro en la que, dependiendo del valor calculado de una celda, aparezca un mensaje de advertencia, el valor siempre será menor o igual o mayor o igual a un valor numérico. Lo he buscado, pero no he encontrado lo que necesito: Si el cálculo de esta celda es menor o igual a 20, entonces aparezca un cuadro que diga "Incrementar la cantidad de sustrato añadido".

2 Respuestas

Respuesta
1
Respuesta
1

[Hola

Solo para estar seguro ¿en esa celda hay una fórmula? ¿Cierto? De se sí la respuesta, de preferencia comenta cuál es.

Abraham Valencia

Si, hay una fórmula. Es una división, el valor de una celda entre 0.65. Si ese valor es menor o igual a 20, debe aparecer el mensaje, si no, no aparecer nada. Espero me haya explicado. Muchas gracias. Saludos!

[Hola

Voy a suponer que la celda es la "A1", entonces usaremos el evento "Calculate" de la hoja. Pega esto en el módulo de la hoja respectiva:

Private Sub Worksheet_Calculate()
Static Valor
On Error Resume Next
If Range("A1").Value = Valor Then Exit Sub
If Valor <= 20 Then
    MsgBox "Valor menor o igual a 20"
End If
Let Valor = Range("A1")
End Sub

Comentas

Abraham Valencia

PD: Casi nunca recomiendo el uso de "On Error Resume Next" pero en este caso, se hace necesario y es algo simple.

No me sale, si la celda tiene condicionales, es lo mismo que un cálculo simple? ¿Funcionaría si quisiera que salieran dos advertencias con dos cálculos diferentes? Gracias.

¿Qué fórmula exacta tienes en la celda? ¿Colocaste lo que te he enviado en el módulo de la hoja?

Abraham Valencia

Es que, ayer me respondió un amigo y me sugirió una, probé y funcionó, y quería solo copiarla y cambiarla porque tengo que tener como tres mensajes de advertencia/sugerencia. Pero la segunda vez no funcionó, entonces, intenté poner la que me enviaste y no funcionó, pero no sé si sea porque haya una fórmula condicional anidada, o porque no puedan aparecer dos o más cuadros de diálogo a la vez. Es esta: SI(M15="Predefined",V34,SI(M15="Enter data",V41,SI(M15="Enter partial data",V48,""))), no hace cálculo, pero selecciona un dato. La que me enviaron fue así (en dos módulos):

Primer módulo:

Private Sub Worksheet_Calculate()

Static previousvalue As Variant

If Range("U52").Value <> previousvalue Then
Message

previousvalue = Range("U52").Value

End If

End Sub

Segundo módulo:

Sub Message()

If Range("U52").Value <= 20 Then

MsgBox ("The biogas amount is not enough for the use of the smallest commercial generator. It is recommended to increase the feedstock amount or the proportion of the feedstock with the higher biogas potencial")

End If

End Sub

¿Qué hay en "V34", "V41" y "V48"'? ¿Números? ¿Texto? Sobre las macros, parece que estás confundiendo las rutinas con los eventos, "Calculate" es un evento de las hojas debe ir en el módulo de la hoja en cuestión no en un módulo "standard" en donde parece que los has colocado.

Dale click derecho a la pestaña de la hoja, elige "Ver código" y ahí copia/pega lo que yo te he enviado con la modificación debida de la celda.

Abraham Valencia

Valores calculados. Ya entendí, lo intentaré, gracias!

Ya lo hice y funciona, pero si quito lo que había puesto en la hoja (el código que te copié que había utilizado antes). Si lo copio en la hoja, con lo que tenía anteriormente, se pega abajo, pero ya no dice Worksheet sino General. ¿Se puede seguir pegando eventos en la misma hoja? Es decir, funcionan ambos por separado, pero si pego otro evento, ya no funciona, solo el primero. Muchas gracias por todo. Si puedes ayudarme estaría perfecto. Sobre esta pregunta pondré excelente porque funciona lo que había pedido, pero me siguen surgiendo problemas, cada vez.

Los eventos de los objetos, son únicos, no se puede "pegar" más de un mismo evento por hoja (objeto). En todo caso, usando "If - Then", o alguna otra instrucción, se puede hacer algo.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas