Msgbox VBA + temporizador

Hola,

Quisiera que cuando se haga clic en mi botón en mi hoja de Excel, aparezca un cuadro de mensaje que pida al usuario que tenga paciencia y que se cierre después de un tiempo predefinido antes de mostrar un resultado.

Si es posible, me gustaría que el usuario pudiera ver un temporizador en el cuadro de mensaje (por ejemplo, cómo pasan los segundos) y que después del tiempo transcurrido, el cuadro de mensaje se cierre solo para mostrar el resultado.

Gracias de antemano por su ayuda.

3 respuestas

  1. Colaborador
    Buenas noches,

    pijaku ha tenido que ausentarse y me pidió que tomara el relevo en tu pregunta.
    En mi caso tampoco (2003) su archivo no funciona como se esperaba.

    Aquí tienes otra propuesta ampliamente inspirada en el sitio de Jacques Boisgontier:
    http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#barreAttente

    El tiempo pasa, pero para eso el cuadro de diálogo debe ser no modal.
    Lo que implica que el usuario puede usar/modificar el libro durante su visualización.
    Aparte de añadir una protección máxima de las hojas antes de mostrar el cuadro de diálogo y quitar estas protecciones después de su eliminación, no veo otras soluciones.
    De lo contrario, renunciar a mostrar el tiempo. A menos que alguien sepa cómo hacer que un cuadro de diálogo sea activo... No he encontrado cómo y es tarde ;-)

    http://www.cijoint.fr/cjlink.php?file=cj201108/cijqMbBdKe.xls

    eric
    0
    1. Moderador
      Hola,
      ¿Es solo para obligar al usuario a esperar, o quieres que se lleve a cabo un procedimiento durante la cuenta regresiva?
      --
      Atentamente,
      Franck P
      0
      1. Es solo para hacerle esperar, sin ningún procedimiento durante la espera.
        0
      2. Moderador
        MsgBox temporal:
        Fuentes Código:
        CreateObject("Wscript.shell").Popup "Mi Texto", 3, "El Título"
        3 = 3 segundos.....

        Para mostrar una cuenta atrás, ya no hay que usar un MsgBox, sino fabricarla uno mismo gracias a los UserForm. Las fuentes y el código a utilizar:
        Dim i As Integer With UserForm1 .Show 0 For i = 10 To 0 Step -1 Application.Wait Now + TimeValue("00:00:01") .Label1 = i .Repaint Next End With

        ejemplo
        0
      3. Ok, he probado el primer código, la ventana no desaparece después de 3 segundos, de hecho, no desaparece en absoluto, hay que presionar OK para que se cierre…
        0
      4. Moderador
        inténtalo de nuevo... A mí también me pasó eso la primera vez. Este código puede requerir el registro del libro de trabajo...
        0
      5. He creado una función en el módulo y es ahí donde puse el código que indicaste, luego tomé mi botón y hice Call + nombre de mi función creada, pero no funciona.
        0
    2. no hay que soñar, no tendrás interacción en un msgbox...
      hay que abrir una nueva ventana con un temporizador de un segundo para mostrar la hora y una prueba sobre el acumulado...
      es simple, pero bueno, no conozco mucho vb. son eventos onclick onload que hay que manejar...
      0