Saltar al contenido

Forzar una actualización de pantalla en Excel VBA

No olvides que en las ciencias un error casi siempre tiene diversas soluciones, de igual modo nosotros mostramos lo más óptimo y eficiente.

Solución:

Agrega un hacer eventos función dentro del bucle, ver más abajo.

También es posible que desee asegurarse de que la barra de estado esté visible para el usuario y restablecerla cuando se complete su código.

Sub ProgressMeter()

Dim booStatusBarState As Boolean
Dim iMax As Integer
Dim i As Integer

iMax = 10000

    Application.ScreenUpdating = False
''//Turn off screen updating

    booStatusBarState = Application.DisplayStatusBar
''//Get the statusbar display setting

    Application.DisplayStatusBar = True
''//Make sure that the statusbar is visible

    For i = 1 To iMax ''// imax is usually 30 or so
        fractionDone = CDbl(i) / CDbl(iMax)
        Application.StatusBar = Format(fractionDone, "0%") & " done..."
        ''// or, alternatively:
        ''// statusRange.value = Format(fractionDone, "0%") & " done..."
        ''// Some code.......

        DoEvents
        ''//Yield Control

    Next i

    Application.DisplayStatusBar = booStatusBarState
''//Reset Status bar display setting

    Application.StatusBar = False
''//Return control of the Status bar to Excel

    Application.ScreenUpdating = True
''//Turn on screen updating

End Sub

Los cuadros de texto en las hojas de trabajo a veces no se actualizan cuando se cambia su texto o formato, e incluso el comando DoEvent no ayuda.

Como no hay un comando en Excel para actualizar una hoja de trabajo de la misma forma que se puede actualizar un formulario de usuario, es necesario usar un truco para obligar a Excel a actualizar la pantalla.

Los siguientes comandos parecen hacer el truco:

- ActiveSheet.Calculate    
- ActiveWindow.SmallScroll    
- Application.WindowState = Application.WindowState

Haz una llamada a DoEvents en el lazo.

Esto afectará el rendimiento, por lo que es posible que desee llamarlo solo en cada, digamos, décima iteración.
Sin embargo, si solo tiene 30, eso no es un problema.

Acuérdate de que tienes la opción de agregar una reseña si descubriste tu inconveniente a tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *