Question

Je crée des applications VBA pour Word et Excel. Est-il possible d'accéder à la barre de progression qui apparaît parfois dans la barre d'état Office?

Était-ce utile?

La solution

Les éléments suivants simulent une barre de progression dans la barre d'état d'Excel:

Public Sub UpdateStatusBar(percent As Double, Optional Message As String = "")

    Const maxBars As Long = 20
    Const before As String = "["
    Const after As String = "]"

    Dim bar As String
    Dim notBar As String
    Dim numBars As Long

    bar = Chr(31)
    notBar = Chr(151)
    numBars = percent * maxBars

    Application.StatusBar = _
    before & Application.Rept(bar, numBars) & Application.Rept(notBar, maxBars - numBars) & after & " " & _
         Message & " (" & PercentageToString(percent) & "%)"

    DoEvents

End Sub

Autres conseils

Je vous recommanderais en outre d’enregistrer l’état actuel de la barre d’état, puis de le restaurer une fois que tout est terminé.

Dim OldStatus
With Application
    OldStatus = .DisplayStatusBar
    .DisplayStatusBar = True
    .StatusBar = "Doing my duty, please wait..."
End With
' Do what you do best here (you can refresh the .StatusBar message with updted, as needed)
With Application
    .StatusBar = False
    .DisplayStatusBar = OldStatus
End With

Je n’ai pas accédé à la barre de progression, mais j’avais utilisé par le passé quelque chose comme ceci pour placer le texte du statut de la tâche dans la barre d’état ...

Sub StatusBarExample()
    Application.ScreenUpdating = False 
    ' turns off screen updating
    Application.DisplayStatusBar = True 
    ' makes sure that the statusbar is visible
    Application.StatusBar = "Please wait while performing task 1..."
    ' add some code for task 1 that replaces the next sentence
    Application.Wait Now + TimeValue("00:00:02")
    Application.StatusBar = "Please wait while performing task 2..."
    ' add some code for task 2 that replaces the next sentence
    Application.Wait Now + TimeValue("00:00:02")
    Application.StatusBar = False 
    ' gives control of the statusbar back to the programme
End Sub

D'après ce que j'en sais, il n'y a aucun moyen de reproduire la ligne bleue de points utilisée par Word & amp; Excel pour afficher les progrès réalisés vers 100%, par exemple lors de l'ouverture d'un fichier.

Je me souviens avoir vu un code le répliquer dans la barre d'état, mais c'était complexe, et je ne le recommanderais pas, alors qu'il est suffisant de dire "X% complete". dans la barre d'état, à l'aide de Application.StatusBar.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top