2011-02-09 5 views
0

J'ai des macros qui s'exécutent sur certains classeurs et un écran d'état qui montre leur progression afin que l'utilisateur n'ait pas à regarder un écran vide ou l'écran de chargement d'Excel. Ou alors je pense. La page d'état fonctionne, elle se mettra à jour au fur et à mesure que les macros s'exécuteront, mais Excel n'en affichera aucune jusqu'à ce que les macros soient terminées. Comment afficher mon écran d'état?Comment afficher un écran d'attente dans VBA Excel 2010

status = "SheetName" 

Private Sub Workbook_Open() 
    'Make sure that the screen is active 
    Sheets(status).Activate 
    Sheets(status).Select 
End Sub 

Répondre

1

Si le but de votre écran d'état est simplement de donner un retour pendant que vos macros s'exécutent, une alternative rapide et facile est d'utiliser la barre d'état. Voici un exemple:

Sub YourMacro() 
    Dim StatusOld As Boolean, CalcOld As XlCalculation 

    ' Capture Initial Settings 
    StatusOld = Application.DisplayStatusBar 

    '  Doing these will speed up your code 
    CalcOld = Application.Calculation 
    Application.Calculation = xlCalculationManual 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 

    On Error GoTo EH 

    ' Your code... 

    ' Every so often while your code is running 
    Application.StatusBar = "Something Useful..." 

    ' After all your code is done 
CleanUp: 
    ' Put things back like they were 
    Application.StatusBar = False 
    Application.Calculation = CalcOld 
    Application.DisplayStatusBar = StatusOld 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
Exit Sub 
EH: 

    ' Your error handler... 

    GoTo CleanUp 
End Sub 
0

Vous devez appeler DoEvents après chaque mise à jour (instruction VBA). Cela permettra au processeur de revenir un instant à Excel, et il l'utilisera pour redessiner l'écran. Vous devez être un peu prudent avec cela car il permettra également à votre utilisateur de cliquer dans la feuille de calcul et de gâcher les choses.

Questions connexes