Como hacer saltar un Msgbox con un formato condicional.

Como puedo hacer para que salte un mensaje cuando se cumpla una condición, bien cuando sea menor de 200 o cuando cambie el cuadro de texto de color. Con este código salta pero salta siempre. ¿Qué hago mal o que no estoy haciendo?

Private Sub Form_Current()

If Me.Texto18 < 200 Then
MsgBox "EL COMBUSTIBLE SE ESTA ACABANDO, AVISA A SUMINISTROS", vbOKOnly, "ATENCION!!"

End If

En Sub

2 respuestas

Respuesta
2

Es cierto lo que te dicen, el código es correcto. Mira

Lo señalado es el registro activo. Si me desplazo al siguiente

Al siguiente

Le cambio el valor al siguiente y

Y el código es el mismo que el tuyo

Private Sub Form_Current()
If Texto18 < 200 Then
MsgBox "El combustible se está acabando", vbOKOnly, "Prepara la cartera"
End If
End Sub

En el caso que dices sería

If texto18<200 or texto18.backcolor=vbyellow then

...

¿Cómo seria el código siendo menor que <200 excluyendo el cero?

No lo entiendo, pero podrías poner

If texto18>=1 and texto18<200 then...

También, si fueras más posibilidades podrías usar el Select case

Select case texto18

case 1 to 200

msgbox....

case 201 to 1000

msgbox

case 1001 to 10000

...

end select

Respuesta
1

El código lo veo bien.

Quizá el evento "current" no sea el mejor para activar el código

Este evento ocurre tanto cuando se abre un formulario, como cada vez que el foco deja un registro y se mueve a otro. Microsoft Access ejecuta el procedimiento de macro o evento actual antes de que se muestre el primer registro o el siguiente.

Por lo tanto, es posible que al abrir el formulario te salte el mensaje puesto que el valor del control Texto18 aún está vacío.

Si el problema, como te digo, se produce al abrir el formulario, quizás podrías poner otro If controlando si, por ejemplo, el campo clave del registro está cargado o no.

if nz(me.campoclave,0)<> 0 then

if me.texto18 < 200 then

mensaje

end if

end if

El problema es que como esta en un subformulario; cada vez que se actualiza el cero me lo toma como menos de 200 y entonces siempre salta. Podría hacerse con menos de 200 excluyendo el cero?

Si claro

if me.texto18 <> 0 and me.texto18 < 200 then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas