Salir del Evento Exit Sin Que Salga Mensaje

Tengo un formulario de control de ordenes, en el mismo hay un textbox con el evento Exit que realiza una búsqueda, si es positiva trae el nombre y otros datos, si es negativo dice que N° de orden no existe hasta allí bien, en el formulario tengo el botón Salir cuya función es cerrar el mismo, pero al darle clip me sale nuevamente el mensaje de que numero de orden no existe no se si es el evento correcto, pero exit me arroja esto que para mi es un error

Respuesta
2

Es porque se ejecuta de nuevo el evento al salir debe poner un controlador en un modulo pon, y en el botón salir pon

Public sal 

If sal=1 then exit sub ' 

En el textbox haz que la variable sea 1

sal=1

Entonces cuando en el botón salir quiera ejecutar el código del evento sal sera igual a 1 y saldrá sin ejecutar evento salir.

Fíjate con F8 paso a paso que la macro está haciendo eso por lo cual te salen esos carteles, fíjate de cambiar el evento a after update change u otro no poner el evento en salir si existe otra opción.

Fíjate en los eventos chnge de este formulario como se usan porque la macro modifica ciertos textbox que tienen evento change y empieza a correr la macro del evento change que no quier que se ejecute desde otro evento, por eso se usan estos controladores para que salten los eventos.

Por lo menos es la forma que yo los manejo, si alguien tiene una mejor que la diga así aprendemos todos.

1 respuesta más de otro experto

Respuesta
2

Es una de las desventajas de utilizar el evento Exit.

Esto es lo que sucede:

- Si el cursor está en el textbox y presionas el botón para salir.

- El primer evento que se ejecuta es Private Sub TextBox1_Exit, porque efectivamente lo primero que estás haciendo es salir del textbox para después oprimir el botón.

- Una alternativa es dejar en blanco el textbox antes de salir, por ejemplo

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1.Value = "" Then Exit Sub
    Set b = Columns("A").Find(TextBox1.Value, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Si"
    Else
        MsgBox "no existe"
    End If
End Sub
  • Entonces sucede lo siguiente.
  • Estás en el textbox, te sales para presionar el botón salir,
  • Pero se ejecuta el evento Exit
  • Valida si textbox1 = "" entonces se sale.

- Pero qué pasa si capturaste algo en el textbox y decides salir, entonces ocurre nuevamente lo mismo.

- Otra alternativa es sustituir el evento Exit por un botón, por ejemplo:

Private Sub CommandButton2_Click()
    If TextBox1.Value = "" Then
        MsgBox "Captura un dato"
        Exit Sub
    End If
    Set b = Columns("A").Find(TextBox1.Value, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Si"
    Else
        MsgBox "no existe"
    End If
End Sub

- De esa forma podrás salir del userform si activar el evento Exit.


Si te sirvió la información, no olvides valorar la respuesta.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas