none
Problemas con MsgBox y AfterUpdate en VBA Excel RRS feed

  • Pregunta

  • Buenos días para todos. De antemano agradezco su atención y colaboración.

     

    Soy nuevo programando en Excel, estoy creando una aplicación en la cual deseo validar el valor digitado (valga la redundancia) de un Textbox junto con un mensaje de advertencia con MsgBox para lo cual agregué el siguiente trigger en el cuadro de comandos:

     

    Private Sub TB_MINUTOS_AfterUpdate()

      If TB_MINUTOS < VL_Minimo_Venta Then

        TB_MINUTOS = Empty

        MsgBox "Minutos no válidos por cantidad mínima, por favor verifique."

        TB_MINUTOS.SetFocus

      Else

        If TB_MINUTOS > VL_Maximo_Venta Then

          TB_MINUTOS = Empty

          MsgBox "Minutos no válidos por cantidad máxima, por favor verifique."

          TB_MINUTOS.SetFocus

        End If

      End If


    Donde TB_MINUTOS es el textbox del cual les hablo. Sin embargo al pasar a un siguiente textbox o presionar la tecla TAB me aparece el mensaje correspondiente pero no regresa a TB_MINUTOS pese a la instrucción SetFocus.

    Cómo puedo lograr que una vez lanzado cualquiera de los dos mensajes posibles, regrese el cursor a este TextBox.

    Les reitero mi agradecimiento por su buena gestión ante mi inquietud.

    Gracias.

     

    viernes, 9 de abril de 2010 7:18

Respuestas

  • hola, !

    una instruccion "setfous" solo la puede comandar el control que tiene "el foco" y para enviar el foco a otro control, por lo que resulta innecesario utilizarla para el control que ya lo tiene, ademas de que cualquier otro control que reciba el foco (tab o clic-directo) no sabe cual control se lo esta cediendo (?)

    te sugiero mover esas instrucciones al evento '_exit' del textbox +/- asi:

      If TB_MINUTOS < VL_Minimo_Venta Or TB_MINUTOS > VL_Maximo_Venta Then
        Cancel = True ' el foco se queda en el mismo control '
        MsgBox "Minutos ""fuera del rango"" para minimo/maximo, por favor verifique."
      End If

    saludos,

    hector.

    • Marcado como respuesta Ivancho Kaiser viernes, 9 de abril de 2010 23:18
    viernes, 9 de abril de 2010 16:57

Todas las respuestas

  • hola, !

    una instruccion "setfous" solo la puede comandar el control que tiene "el foco" y para enviar el foco a otro control, por lo que resulta innecesario utilizarla para el control que ya lo tiene, ademas de que cualquier otro control que reciba el foco (tab o clic-directo) no sabe cual control se lo esta cediendo (?)

    te sugiero mover esas instrucciones al evento '_exit' del textbox +/- asi:

      If TB_MINUTOS < VL_Minimo_Venta Or TB_MINUTOS > VL_Maximo_Venta Then
        Cancel = True ' el foco se queda en el mismo control '
        MsgBox "Minutos ""fuera del rango"" para minimo/maximo, por favor verifique."
      End If

    saludos,

    hector.

    • Marcado como respuesta Ivancho Kaiser viernes, 9 de abril de 2010 23:18
    viernes, 9 de abril de 2010 16:57
  • Héctor.

     

    Nuevamente te quedo muy agradecido, has acertado nuevamente con tu recomendación. Me funcionó perfectamente.

     

    Gracias.

    viernes, 9 de abril de 2010 23:19